【发布时间】:2014-08-26 15:49:05
【问题描述】:
我目前正在测试 pthreads 的使用情况,以加快我拥有的其他代码的速度。基本上我的代码目前拥有的是几个最终进行矩阵计算的 for 循环。我尝试生成将同时执行这些计算的线程,结果将运行时间缩短了一半。
我的问题是,有没有办法最初产生这些 pthread,让它们运行函数,然后再次使用它们来运行相同的函数而不关闭它们?还是需要在执行完任务后关闭它们?
顺便说一句,我使用的是 Windows,使用的是 pthreads 库。
【问题讨论】:
-
将指向队列的指针传递给线程。让线程检查队列是否为空。如果不是,则运行队列中的下一个函数。如果它是空的,可能会在循环中产生/睡眠。当队列中有新函数时,您可能只是“通知”线程。队列必须比线程的寿命更长。也许“静态”或“原子”队列会起作用。如果多个线程可以访问队列,您可能需要同步。
-
只是为了从长远来看为您省去很多痛苦,C++ 标准库包含一个比 pthreads 更好(也更安全)的线程库,并且它不需要您链接到第三个-党图书馆
标签: c++ windows multithreading pthreads pthreads-win32