|
|
1
13
不能有多个线程与消息泵或任何UI元素交互。那就是疯狂。 如果有长的处理任务可以传递给工作线程,那么可以这样做,但是必须使用另一个线程安全队列来管理它们。 |
|
2
4
如果这是以后的事情,我会说在 the yet to be released Visual Studio 2010 然而,我今天所说的工具是分离工作,特别是在消息传递泵中,您希望尽可能少地做一些工作来识别消息并将其传递给另一个将处理工作的线程(希望没有需要的线程本地信息)。将它传递给另一个线程意味着将它插入到某种类型的线程安全队列中,不管是锁定的还是无锁的,然后设置一个事件,其他线程可以监视该事件,以便从队列中提取项目(或直接提取项目)。为了提高效率,您可以考虑将“工作窃取队列”与线程池一起使用。
这将完成从UI线程获取工作,要让UI线程执行额外的工作(如绘制该工作的结果),您需要生成一条Windows消息来唤醒UI线程并检查结果,一种简单的方法是在UI线程上执行另一个“工作就绪”的工作对象队列。想象一下这样的队列:
如果你仍然看到不稳定的移动响应,另一个可以帮助你的技术是确保你的线程回调不会执行超过16毫秒的时间,并且你不会获取任何锁或者在UI线程上做任何类型的I/O。有一系列工具可以帮助识别这些操作,最自由可用的是 'windows performance toolkit' . |
|
|
3
0
在处理长操作时创建单独的线程,也就是说,保持简单,问题在于运行的某些代码花费了太长的时间,这就是应该有单独线程的代码。 |
|
|
PHPLover · “支持PHP扩展或功能的端口”实际上是什么意思? 1 年前 |