Как делают я беру владение заброшенного повышения:: межпроцессный:: interprocess_mutex?

Можно использовать эти CONVERT функция для возврата только даты. См. ссылку (ссылки) ниже:

Управление Датой и временем в SQL Server 2000

БРОСОК и ПРЕОБРАЗОВЫВАЕТ

, синтаксис для использования функции преобразования:

CONVERT ( data_type [ ( length ) ] , expression [ , style ] ) 

7
задан Pedro d'Aquino 2 May 2013 в 17:27
поделиться

1 ответ

К сожалению, это не поддерживается API boost :: interprocess как есть. Однако есть несколько способов реализовать это:

Если вы используете платформу POSIX с поддержкой pthread_mutexattr_setrobust_np, отредактируйте boost / interprocess / sync / posix / thread_helpers.hpp и boost / interprocess / sync / posix / interprocess_mutex.hpp использовать надежные мьютексы и каким-то образом обрабатывать возврат EOWNERDEAD из pthread_mutex_lock.

Если вы используете другую платформу, вы можете отредактировать boost / interprocess / sync / emulation / interprocess_mutex.hpp для использования счетчика генерации с заблокированным флагом в нижнем бите. Затем вы можете создать протокол возврата, который установит флаг в слове блокировки, чтобы указать ожидающее восстановление, а затем выполнить сравнение и обмен после тайм-аута, чтобы проверить, что то же поколение все еще находится в слове блокировки, и если да, замените его на заблокированное значение следующего поколения.

Если вы работаете в Windows, другим хорошим вариантом будет использование собственных мьютексных объектов; в любом случае они, вероятно, будут более эффективными, чем ожидание при занятости.

Вы также можете пересмотреть использование протокола с общей памятью - почему бы вместо этого не использовать сетевой протокол?

8
ответ дан 7 December 2019 в 05:26
поделиться
Другие вопросы по тегам:

Похожие вопросы: