2017-04-27 1 views
0

다중 스레드 프로그램에서 스레드로 병렬 계산 된 계산을 기반으로 공유 메모리를 할당 한 다음 동기화 후 모든 스레드에서 해당 공유 메모리를 사용해야합니다. 쓰레드에 합류하지 않고 새로운 쓰레드를 생성하지 않고 그렇게 할 수있는 방법이 있습니까? 스레드 계산을 기반으로 공유 메모리 할당

  • 스레드가 공유에 자신의 실행을 계속 예상 크기의 공유 메모리를 선언

    1. 16 스레드 병렬
    2. 에 필요한 메모리의 크기를 추정 :

      내가 다음과 같이 할 것을 시도하고 단순화하기 메모리

    멀티 스레드의 경우 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