2017-04-27 17 views
0

マルチスレッドプログラムでは、スレッドによって並列に計算された見積もりに基づいて共有メモリを割り当ててから、すべてのスレッドでその共有メモリを使用する必要があります。スレッドに参加せずに新しいスレッドを生成することなく、そうする方法はありますか? スレッド計算に基づいて共有メモリを割り当てます。

  • スレッドが共有上で、それらの実行を継続推定サイズの共有メモリを宣言

    1. 16のスレッドが並列
    2. に必要なメモリのサイズを見積もる:

      は、私は以下のようにやろうとしています簡単にするために、メモリ

    私はpthreadsライブラリとpthread_barrier_waitマルチスレッドのために使用しています。

  • 答えて

    1

    確かに、正しいトラックにはすでにpthread_barrier_wait()が表示されています。それらのすべてが完了するまで

    /* ...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... */ 
    

    スレッドが最初の関門でお待ちしておりますし、正確にそれらの一方が、必要なメモリを割り当てます、そして、彼らはすべてのよ:その後、スレッド機能を持っていない、16にバリアを初期化メモリが正常に割り当てられるまで第2の障壁で待機する。

    +0

    ありがとうございます! – bawejakunal

    関連する問題