Запитання з тегом «locking»

Блокування дозволяє використовувати різні типи ресурсів, використовуючи виключно один процес за один раз.

9
Летючі проти замкнених проти замків
Скажімо, у класі є public int counterполе, до якого звертаються декілька потоків. Це intлише збільшується або зменшується. Для збільшення цього поля, який підхід слід використовувати і чому? lock(this.locker) this.counter++;, Interlocked.Increment(ref this.counter);, Змініть модифікатор доступу counterна public volatile. Тепер, коли я виявив volatile, я видалив багато lockтверджень і використання Interlocked. Але …

10
Оптимістичне проти песимістичного блокування
Я розумію відмінності між оптимістичним та песимістичним блокуванням. Тепер хтось міг би мені пояснити, коли я взагалі використовую будь-яку? І чи змінюється відповідь на це запитання залежно від того, використовую чи ні я збережену процедуру для виконання запиту? Але просто для перевірки оптимістичні засоби "не замикайте стіл під час читання", …

8
Як саме працює замок?
Я бачу, що для використання об'єктів, які не є безпечними для потоків, ми обертаємо код таким замком: private static readonly Object obj = new Object(); lock (obj) { // thread unsafe code } Отже, що відбувається, коли декілька потоків отримують доступ до одного і того ж коду (припустимо, він працює …

16
Чому замок (це) {…} поганий?
Документація MSDN говорить про це public class SomeObject { public void SomeOperation() { lock(this) { //Access instance variables } } } є "проблема, якщо доступ до примірника може бути відкритим". Цікаво, чому? Це тому, що замок буде триматися довше, ніж потрібно? Або є якась більш підступна причина?



7
Чи справді трапляються помилкові пробудження на Java?
Бачачи різні запитання, пов'язані з блокуванням, і (майже) завжди знаходжуючи «цикл через помилкові умови пробудження» 1 Цікаво, чи відчував хтось таке пробудження (якщо припустити пристойне апаратне / програмне середовище, наприклад)? Я знаю, що термін "фальшивий" означає відсутність очевидних причин, але які можуть бути причини такого роду подій? ( 1 Примітка. …

5
Ефект підказки NOLOCK у SELECT операторах
Я думаю, справжнє питання: Якщо мене не хвилюють брудні читання, додавання підказки (NOLOCK) до оператора SELECT вплине на продуктивність: поточний оператор SELECT інші операції проти даної таблиці Приклад: Select * from aTable with (NOLOCK)
199 sql  sql-server  locking 

11
Блокування синхронізованого методу Java на об'єкті чи методі?
Якщо у мене в одному класі є 2 синхронізованих методу, але кожен, хто має доступ до різних змінних, може 2 потоку отримати доступ до цих двох методів одночасно? Чи відбувається блокування на об'єкті, чи він стає таким же специфічним, як змінні всередині синхронізованого методу? Приклад: class X { private int …

7
Рекурсивний блокування (Mutex) проти нерекурсивного блокування (Mutex)
POSIX дозволяє мютексам бути рекурсивними. Це означає, що однаковий потік може двічі заблокувати один і той самий файловий файл і не матиме тупикової ситуації. Звичайно, його також потрібно розблокувати двічі, інакше жодна інша нитка не зможе отримати мутекс. Не всі системи, що підтримують pthreads, також підтримують рекурсивні мютекси, але якщо …

7
Які відмінності між різними параметрами синхронізації потоків у C #?
Чи може хтось пояснити різницю між: замок (деякийоб'єкт) {} Використання Mutex Використання Семафору Використання монітора Використання інших класів синхронізації .Net Я просто не можу це зрозуміти. Мені здається, перші два такі ж?

17
Що таке тупик?
Під час написання багатопотокових програм однією з найпоширеніших проблем є тупикові місця. Мої запитання до громади: Що таке тупик? Як ви їх виявляєте? Ви справляєтесь з ними? І нарешті, як ви запобігаєте їх виникненню?

5
Паралельний HashSet <T> у .NET Framework?
У мене такий клас. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); } Мені потрібно змінити поле "Дані" з різних потоків, тому я хотів би отримати деякі думки щодо моєї поточної безпечної реалізації. class Test{ public HashSet&lt;string&gt; Data = new HashSet&lt;string&gt;(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void …

5
Наскільки ефективно блокувати розблокований мютекс? Яка вартість мютексу?
Мовою низького рівня (C, C ++ або будь-якою іншою): у мене є вибір між тим, як мати купу файлів (як, наприклад, те, що дає мені pthread) або те, що надає рідна системна бібліотека), або один для об'єкта. Наскільки ефективно блокувати мютекс? Тобто скільки ймовірних інструкцій асемблера й скільки часу вони …

4
std :: lock_guard або std :: scoped_lock?
C ++ 17 представив новий клас блокування під назвою std::scoped_lock. Судячи з документації, він схожий на вже існуючий std::lock_guardклас. У чому різниця і коли я повинен її використовувати?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.