我在C#和VB中看过这个例子,但是我真的受限于c ++,我试图将20个字符串传递给后台工作者,以便它可以对它们执行任务。我已经尝试传递Windows窗体对象,但它不能从System :: Object转换回Form而不会导致编译器错误。
我也尝试通过DoWork方法传递包含字符串的对象,但这也不起作用。
非常感谢任何帮助。谢谢
答案 0 :(得分:0)
对于大量字符串(或更常见的“任务”),您可以使用同步队列,无锁队列,也可以使用最简单的解决方案 - 完成端口。完成端口效率惊人,如果您安排的任务不超过几万个,那么确实不值得考虑更复杂的解决方案。
对于仅20个任务,这通常是矫枉过正(除非每个任务运行很长时间),将everthing放入一个对象并将指针传递给该对象是最佳解决方案。否则,通信/同步开销不仅仅是多线程的增益。
将指向结构的指针传递给工作线程应该可以在C ++中完美地工作(我一直这样做)。究竟是什么问题?