首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

多线程回调有关问题

2013-12-28 
多线程回调问题我多个线程中,调用一个回调函数CallFunction(),有可能存在同时调用的问题,现在有两个问题请

多线程回调问题
我多个线程中,调用一个回调函数CallFunction(),有可能存在同时调用的问题,现在有两个问题请教一下大家:
1.在回调中是否可以,操作界面
2.调用CallFuntction是否需要考虑线程同步的问题,
谢谢大家
[解决办法]
如果call function中没有用到全局或静态变量的话,且参数都是值传递的情况下,可以不考虑线程同步!

[解决办法]
个人观点,尽量避免在辅助线程里面操作UI,这个可能会导致一些问题。
通常ui都是在主线程里面处理的。
辅助线程产生相应的数据,然后主线程根据数据更新ui。通常是这个做法。(其实,某些系统已经禁止辅助线程操作ui了,比如Android)。
另外关于线程同步问题,主要是看你的线程是不是有共享的资源。如果有,就需要考虑上锁,可以使用windows的锁,也可以直接使用boost。
[解决办法]

引用:
本来用回调就是考虑在线程中调用回调来更新界面等操作 看来这条路不通了 是么?

可以的,你可以在线程中发送窗口消息过去,SendMessage或PostMessage,然后UI界面的
窗口回调函数处理这些消息。注意前面一个是同步返回,后面那个是异步的。
[解决办法]
5楼说的就是一个办法,可以通过sendmessage等来通知主线程去更新。还可以自定义消息。
[解决办法]
1. 可以
2. 取决于有没有竞争

热点排行