|
|
Pdf ko'rish
bet | 655/658 | Sana | 12.06.2023 | Hajmi | 6,27 Mb. | | #950840 |
| Bog'liq CLR via C Programmirovanie na platforme Microsoft NET Framework 4 5 na yazyke C
Глава.30 .Гибридные.конструкции.синхронизации.потоков
private Int32 m_state = 0;
private Boolean IsFree { get { return m_state == 0; } }
private Boolean IsOwnedByWriter { get { return m_state == 1; } }
private Boolean IsOwnedByReaders { get { return m_state > 0; } }
private Int32 AddReaders(Int32 count) { return m_state += count; }
private Int32 SubtractReader() { return m_state; }
private void MakeWriter() { m_state = 1; }
private void MakeFree() { m_state = 0; }
#endregion
// Для отсутствия конкуренции (с целью улучшения производительности
// и сокращения затрат памяти)
private readonly Task m_noContentionAccessGranter;
// Каждый ожидающий поток записи пробуждается через свой объект
// TaskCompletionSource, находящийся в очереди
private readonly Queue> m_qWaitingWriters =
new Queue>();
// Все ожидающие потоки чтения пробуждаются по одному
// объекту TaskCompletionSource
private TaskCompletionSource |
|
|