在OpenMP中,有例程OMP_TEST_LOCK
,当线程调用以尝试设置锁定时,如果锁定不可用,则线程不会阻塞。
我想知道调用一个线程会做什么,如果没有阻塞,当它试图锁定的锁不可用时?谢谢!
答案 0 :(得分:1)
OMP_TEST_LOCK将指示是否可以通过返回码设置锁定。
示例:
if( omp_test_lock( &a_lock ) )
{
work_a();
omp_unset_lock( &a_lock ) )
}
else
{
work_b();
}
work_c();
如果可以设置锁定,则会调用work_a
然后work_c
。如果无法设置锁定,则会调用work_b
和work_c
。这只是正常的控制流程。