C 基于线程计算分配共享内存

C 基于线程计算分配共享内存,c,multithreading,pthreads,pthread-join,C,Multithreading,Pthreads,Pthread Join,在多线程程序中,我需要根据线程并行计算的估计分配共享内存,然后在所有线程之间使用该共享内存(同步后)。有没有一种方法可以在不加入线程和产生新线程的情况下实现这一点 为了简化,我尝试做以下工作: 16个线程估计并行所需的内存大小 声明估计大小的共享内存 线程继续在共享内存上执行 我正在使用pthreads库和pthread\u barrier\u wait进行多线程。当然,使用pthread\u barrier\u wait()已经走上了正确的道路。将屏障初始化为16,然后让线程函数执行以下操作:

在多线程程序中,我需要根据线程并行计算的估计分配共享内存,然后在所有线程之间使用该共享内存(同步后)。有没有一种方法可以在不加入线程和产生新线程的情况下实现这一点

为了简化,我尝试做以下工作:

  • 16个线程估计并行所需的内存大小
  • 声明估计大小的共享内存
  • 线程继续在共享内存上执行

  • 我正在使用
    pthreads
    库和
    pthread\u barrier\u wait
    进行多线程。

    当然,使用
    pthread\u barrier\u 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... */
    
    线程将在第一个屏障处等待,直到所有线程都完成,然后正好有一个线程将分配所需的内存,并且所有线程将在第二个屏障处等待,直到成功分配内存