在多线程程序中,我需要基于并行计算的线程计算的共享内存,然后在所有线程(同步之后(使用该共享存储器。有没有连接线程并产生新线程的方法可以这样做的方法?
为了简化我尝试以下操作:
- 16线程估计并行所需的内存大小
- 声明估计大小的共享记忆
- 线程继续在共享内存上执行
我正在使用pthreads
库和pthread_barrier_wait
进行多线程。
当然,您已经使用pthread_barrier_wait()
在正确的轨道上。将屏障初始化为16,然后具有线程功能:
/* ...Work on estimated memory size... */
if (pthread_barrier_wait(&barrier) == PTHREAD_BARRIER_SERIAL_THREAD)
{
/* ...Allocate the shared memory... */
}
pthread_barrier_wait(&barrier);
/* ...Continue execution using shared memory... */
线程将在第一个障碍物等待之前等待,直到所有人都完成为止,然后它们中的一个将分配所需的内存,并且它们都将在第二个障碍物中等待,直到记忆被成功分配为止。
。