Запитання з тегом «thread-safety»

Частина коду є безпечною для потоків, якщо вона лише маніпулює структурами даних таким чином, що дозволяє послідовно виконувати цей код декількома потоками. Код може бути безпечним для потоку, умовно безпечним (необхідне взаємне виключення) або небезпечним (може бути безпечно використаний лише одним потоком).

16
Колекція була модифікована; Операція перерахування може не виконуватися
Я не можу дійти до цієї помилки, оскільки коли налагоджувач додається, він, схоже, не виникає. Нижче - код. Це WCF-сервер у службі Windows. Метод NotifySubscribers викликається службою кожного разу, коли відбувається подія даних (через випадкові проміжки часу, але не дуже часто - приблизно 800 разів на день). Коли клієнт Windows …


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

3
Використовуйте випадки для планувальників RxJava
У RxJava є 5 різних планувальників на вибір: neposredna () : Створює та повертає Scheduler, який негайно виконує роботу над поточним потоком. trampoline () : Створює та повертає Scheduler, який черги працює над поточним потоком, який буде виконаний після завершення поточної роботи. newThread () : Створює та повертає Планувальник, який …

7
Що саме є рецензуючою функцією?
Більшість з тих часів , визначення reentrance цитата з Вікіпедії : Комп'ютерна програма або звичайна програма описується як ретентована, якщо її можна буде безпечно викликати ще до того, як завершиться її попереднє виклик (тобто воно може бути безпечно виконано одночасно). Щоб бути рентентом, комп’ютерна програма або розпорядок роботи: Не повинно …

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

7
Черга. Черга проти колекцій.deque
Мені потрібна черга, в яку можна покласти кілька потоків, і з яких можна прочитати кілька потоків. У Python є щонайменше два класи черг, Queue.Queue і collection.deque, причому перший, здавалося б, використовує останній внутрішньо. Обидва заявляють, що захищені потоками в документації. Однак у документах черги також зазначено: collection.deque - це альтернативна …

9
Автоматизація шаблону коду InvokeRequired
Я болісно усвідомлював, як часто потрібно писати наступний зразок коду в GUI-коді, керованому подіями, де private void DoGUISwitch() { // cruisin for a bruisin' through exception city object1.Visible = true; object2.Visible = false; } стає: private void DoGUISwitch() { if (object1.InvokeRequired) { object1.Invoke(new MethodInvoker(() => { DoGUISwitch(); })); } else …

4
Що робить метод безпечним для ниток? Які правила?
Чи існують загальні правила / рекомендації щодо того, що робить метод безпечним для потоків? Я розумію, що, мабуть, мільйон разових ситуацій, а як взагалі? Це просто? Якщо метод має доступ лише до локальних змінних, це безпечно для потоків. Це все? Чи застосовується це і для статичних методів? Одна відповідь, надана …
156 c#  thread-safety 

5
Чи безпечна нитка значень ConcurrentHashMap?
У javadoc для ConcurrentHashMap є наступне: Операції пошуку (включаючи get), як правило, не блокуються, тому можуть перетинатися з операціями оновлення (включаючи ставити та видаляти). Результати пошуку відображають результати останніх завершених операцій з оновлення, проведених після їх початку. Для сукупних операцій, таких як putAll та clear, паралельні вилучення можуть відображати вставлення …

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 # Нитка безпечна швидка (est) лічильник
Який спосіб отримати безпечний лічильник потоку в C # з найкращими можливими показниками? Це так просто, як це виходить: public static long GetNextValue() { long result; lock (LOCK) { result = COUNTER++; } return result; } Але чи існують швидші альтернативи?

5
Чи безпечні несинхронізовані статичні методи, якщо вони не змінюють змінні статичного класу?
Мені було цікаво, чи є у вас статичний метод, який не синхронізований, але не змінює жодних статичних змінних, це безпечно для потоків? Що робити, якщо метод створює локальні змінні всередині нього? Наприклад, чи безпечний такий код потоку? public static String[] makeStringArray( String a, String b ){ return new String[]{ a, …

8
Чи безпечна нитка! = Перевірити?
Я знаю, що такі складні операції, як, наприклад i++, не є безпечними для потоків, оскільки вони включають кілька операцій. Але чи перевірка посилання на себе є потоком безпечної роботи? a != a //is this thread-safe Я спробував це запрограмувати і використовувати кілька потоків, але це не вийшло з ладу. Я …

4
Чи добре використовувати екземпляр Gson як статичне поле в модельному бобі (повторне використання)?
Ось модель, яку я реалізував: public class LoginSession { private static final Gson gson = new Gson(); private String id; private String name; private long timestamp; public LoginSession(String id, String name) { this.id = id; this.name = name; this.timestamp = System.currentTimeMillis(); } public String toJson() { return gson.toJson(this); } public …

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