[问题] 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