제페 2015. 2. 5. 01:47
반응형

배리어(Barrier)


특정 작업을 시작하기 전에, 다른 스레드가 모두 완료되어야만 하는 때가 있을 수 있다. 

이럴때 배리어를 이용하면 다른 스레드가 작업을 완료할 때까지 대기할 수 있다.


전형적인 사용 시기는 서로 다른 두 코드가 종속성을 가질 때다. 

아래 코드에서 변수 total은 행렬의 각 항목에 값이 모두 설정되어야만 계산될 수 있다. 

배리어를 이용하면 변수 total을 계산하기 전에 행렬에 값을 설정하는 모든 스레드가 완료하는 것을 보장한다.


배리어를 이용한 순서 보증


compute_values_held_in_mat();

barrier(); // 배리어

total = calc_value_from_mat();


반응형