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