[問題] Multithread delegate問題

作者: Keitaro (動き出す時間...)   2014-09-30 00:17:34
開發平台(Platform): (Ex: VC++, GCC, Linux, ...)
VC2008
額外使用到的函數庫(Library Used): (Ex: OpenGL, ...)
MFC
問題(Question):
在multithread下,使用delegate的方法讓thread之間溝通
程式碼(Code):(請善用置底文網頁, 記得排版)
請看底下推文的連結
補充說明(Supplement):
各位好,不好意思小弟我又上來請教各位先進了。
自從換工作學著寫MFC後,最近開始學著寫multithread。
一開始寫的時候不知道危險,在MainThread建立新的CWinThread時,
直接把MainThread的物件位址丟給CWinThread物件接,
雖然要存取MainThread物件時都有先做Lock/Unlock,
但找了相關資料覺得這寫法太危險了,
學習採用Delegate的寫法。
搜尋版上的文章後,看到cjcat2266版友分享的文章
http://allenchou.net/2012/04/easy-c-delegates/
我將cjcat2266版友這網址的程式碼,除了demo sample code以外,
copy到一個Delegate.h的檔案。
程式碼大綱如上面的網址所示。
結果Complier跟我說,建立struct時,沒有對應的建構式。
struct ThreadParaStruct在還沒有加入Delegate物件這一行
Delegate<void, int> fp_fun_in_struct;
之前,compiler是過的了的。
請問這邊該怎麼改呢?謝謝。
作者: bluesoul (忙死你老爸)   2014-09-30 10:09:00
誰沒有對應的建構式?
作者: carylorrk (carylorrk)   2014-10-02 11:01:00
不是很懂你的問題,看一開始的 code 直覺是你的MainThreadObj::fun 跟文章中的 Delegate 要的參數不同啊XD? 其實現在最簡單的方式是 std::function?還有放 map 的意思是? delegate 的目的就是用起來像是class 本身的函式,但是實際其實交給其他人來做不是嗎因爲不懂 MFC 也沒有 Windows,無法跑跑看 XDD
作者: firose (guest也是也是也是也是也)   2014-10-02 11:53:00
我不懂這一個 Delegate<> 跟執行緒間安全地溝通有何關聯?
作者: carylorrk (carylorrk)   2014-10-02 14:18:00
同上XD

Links booklink

Contact Us: admin [ a t ] ucptt.com