0
在多线程程序中,我需要根据线程并行计算的估计来分配共享内存,然后在所有线程之间(同步之后)使用该共享内存。有没有办法这样做,而不加入线程和产生新的线程?基于线程计算分配共享内存
为了简化我试图如下做:
- 16个线程估计的存储器中并行
- 所需的大小声明估计大小的共享存储器
- 线程继续在共享它们的执行内存
我正在使用pthreads
库和pthread_barrier_wait
多线程。
在多线程程序中,我需要根据线程并行计算的估计来分配共享内存,然后在所有线程之间(同步之后)使用该共享内存。有没有办法这样做,而不加入线程和产生新的线程?基于线程计算分配共享内存
为了简化我试图如下做:
我正在使用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... */
线程将在第一屏障等待,直到所有的人都完成了,那么究竟他们中的一个将分配所需的内存,并且他们都会等待第二个障碍,直到内存被成功分配为止。
非常感谢! – bawejakunal