Почему я захожу в тупик с мьютексом чтения / записи, идущим от записи-> чтения-> записи? - PullRequest
0 голосов
/ 09 мая 2020

У меня есть код TBB, где я использую блокировку чтения / записи для реализации барьера, который иногда заходит в тупик, и я не уверен, почему. Я предполагаю, что это как-то связано с внутренней реализацией блокировки чтения / записи. Псевдокод ниже.

tbb::queuing_rw_mutex mutex;
tbb::parallel_for
  (0, array.Num(),
   [&](int i)
   {
     tbb::queuing_rw_mutex::scoped_lock lock(mutex); // write lock
     ...
     lock.downgrade_to_read();
     ...
     lock.upgrade_to_write();
     ...
     // implicit lock.unlock()
   });

Есть предположения, почему я иногда захожу в тупик в ожидании первой блокировки записи?

...