2017-04-27 53 views
0

在多线程程序中,我需要根据线程并行计算的估计来分配共享内存,然后在所有线程之间(同步之后)使用该共享内存。有没有办法这样做,而不加入线程和产生新的线程?基于线程计算分配共享内存

为了简化我试图如下做:

  1. 16个线程估计的存储器中并行
  2. 所需的大小声明估计大小的共享存储器
  3. 线程继续在共享它们的执行内存

我正在使用pthreads库和pthread_barrier_wait多线程。

回答

1

当然,你已经在与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... */ 

线程将在第一屏障等待,直到所有的人都完成了,那么究竟他们中的一个将分配所需的内存,并且他们都会等待第二个障碍,直到内存被成功分配为止。

+0

非常感谢! – bawejakunal