2017-04-27 52 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