Шаблоны AngularJS в производстве Rails недоступны

Когда я не использую объект тайм-аута, а мьютекс заброшен, ScopedLock ctor блокирует бесконечно. Ожидается

blockquote>

. Лучшим решением для вашей проблемы было бы, если бы boost поддерживал надежные мьютексы. Однако Boost в настоящее время не поддерживает надежные мьютексы. Существует только план эмуляции надежных мьютексов, потому что только linux имеет встроенную поддержку. Эмуляция еще только планировалась автором книги Ион Газтанага. Проверьте эту ссылку о возможном взломе мьютексов rubust в boost libs: http://boost.2283326.n4.nabble.com/boost-interprocess-gt-1-45-robust-mutexes-td3416151.html

Между тем вы можете попытаться использовать атомные переменные в общем сегменте.

Также посмотрите на эту запись stackoverflow: Как я могу взять на себя ответственность за покинутый boost :: interprocess :: interprocess_mutex?

Когда я использую тайм-аут, а мьютекс заброшен, ScopedLock ctor немедленно возвращается и сообщает мне, что он не владеет мьютекс. Хорошо, возможно, это нормально, но почему он не ждет 10 секунд, о которых я тоже рассказываю?

blockquote>

Это очень странно, вы не должны получать это поведение. Тем не менее: временная блокировка, возможно, реализована с точки зрения блокировки try. Проверьте эту документацию: http://www.boost.org/doc/libs/1_53_0/doc/html/boost/interprocess/scoped_lock.html#idp57421760-bb Это означает, что реализация lock может вызывать исключение изнутри и затем возвращает false.

inline bool windows_mutex::timed_lock(const boost::posix_time::ptime &abs_time)
{
   sync_handles &handles =
      windows_intermodule_singleton::get();
   //This can throw
   winapi_mutex_functions mut(handles.obtain_mutex(this->id_));
   return mut.timed_lock(abs_time);
}

Возможно, дескриптор не может быть получен, поскольку мьютекс заброшен.

Когда мьютекс isn ' t отказался, и я использую таймаут, ScopedLock ctor все равно возвращается немедленно, сообщая мне, что он не может заблокировать или взять на себя ответственность за мьютекс, и я прохожу движение от удаления мьютекса и его переделку. Это совсем не то, что я хочу.

blockquote>

Я не уверен в этом, но я думаю, что именованный мьютекс реализован с использованием общей памяти. Если вы используете Linux, проверьте файл / dev / shm / MutexName. В Linux дескриптор файла остается действительным до тех пор, пока он не будет закрыт, независимо от того, удалил ли вы сам файл, например. повышение :: межпроцессного :: named_recursive_mutex :: удалить.

0
задан Bijendra 17 January 2019 в 11:23
поделиться