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

Багатопотоковість - це здатність комп'ютера або програми виконувати роботу одночасно або асинхронно, використовуючи кілька одночасних потоків виконання (зазвичай їх називають потоками).

6
Що відбувається з відокремленою ниткою при виході main ()?
Припустимо, я починаю a, std::threadа потім detach()це, тому нитка продовжує виконувати, навіть незважаючи на std::threadте, що колись її представляла, виходить за межі області. Припустимо також, що програма не має надійного протоколу для приєднання від'єднаного потоку 1 , тому відокремлена нитка все ще працює при main()виході. Я нічого не можу знайти …

13
Чи може num ++ бути атомним для 'int num'?
Загалом, для int num, num++(або ++num), в якості операції читання-модифікація-запис, це НЕ атомна . Але я часто бачу компілятори, наприклад GCC , генерують такий код для нього ( спробуйте тут ): Оскільки рядок 5, якому відповідає num++одна інструкція, чи можна зробити висновок про те, що в даному випадку num++ є …

9
Найкраща практика: AsyncTask під час зміни орієнтації
AsyncTask це чудова річ, щоб запустити складні завдання в інший потік. Але коли є зміна орієнтації або інша зміна конфігурації, поки AsyncTaskфункція все ще працює, струм Activityзнищується та перезапускається. Оскільки екземпляр AsyncTaskз’єднаний з цією діяльністю, він виходить з ладу і викликає вікно повідомлення "примусово закрити". Отже, я шукаю якусь "найкращу …

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 …


6
Коли використовувати enumerateObjectsUsingBlock vs. for
Крім очевидних відмінностей: Використовуйте, enumerateObjectsUsingBlockколи вам потрібен і індекс, і об'єкт Не використовуйте, enumerateObjectsUsingBlockколи вам потрібно змінювати локальні змінні (я помилявся з цього приводу, див. Відповідь bbum) Є чи в enumerateObjectsUsingBlockцілому вважається краще або гірше , якщо for (id obj in myArray)б також працювати? Які переваги / недоліки (наприклад, це …

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

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, …


11
Чекаємо на список майбутнього
У мене є метод, який повертає Listф'ючерси List&lt;Future&lt;O&gt;&gt; futures = getFutures(); Тепер я хочу почекати, поки або всі ф'ючерси будуть успішно оброблені, або будь-яке завдання, вихід якого повертається майбутнім, викине виняток. Навіть якщо одне завдання кидає виняток, немає іншого сенсу чекати на інші ф'ючерси. Простий підхід був би до цього …

26
Спроба читати чи записувати захищену пам'ять. Це часто свідчить про те, що інша пам'ять пошкоджена
Я сподіваюся, що хтось може просвітити мене щодо того, що могло спричинити цю помилку: Спроба читати чи записувати захищену пам'ять. Це часто свідчить про те, що інша пам'ять пошкоджена. Я не можу реально поштовий індекс, оскільки ця помилка, здається, потрапляє в будь-яку випадкову область програми. Додаток запуститься десь 12-48 годин …

3
Parallel.ForEach () vs. foreach (IEnumerable <T> .AsParallel ())
На жаль, я намагаюся знайти ці два методи в BCL за допомогою Reflector, але не можу їх знайти. Яка різниця між цими двома фрагментами? A: IEnumerable&lt;string&gt; items = ... Parallel.ForEach(items, item =&gt; { ... }); B: IEnumerable&lt;string&gt; items = ... foreach (var item in items.AsParallel()) { ... } Чи є …

11
"Java DateFormat не є безпечним для потоків", до чого це призводить?
Всі застерігають, що Java DateFormat не є безпечним для потоків, і я розумію цю концепцію теоретично. Але я не в змозі уявити, з якими актуальними проблемами ми можемо зіткнутися через це. Скажімо, у мене є поле DateFormat у класі, і те саме використовується в різних методах у класі (форматування дат) …

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.