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

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

8
Перетворення ExecutorService на демон в Java
Я використовую ExecutoreService в Java 1.6, запущений просто ExecutorService pool = Executors.newFixedThreadPool(THREADS). Коли мій основний потік буде закінчений (разом із усіма завданнями, обробленими пулом потоків), цей пул не дозволить моїй програмі зупинитися, поки я явно не покличу pool.shutdown(); Чи можу я уникнути необхідності викликати це, як-небудь перетворивши управління внутрішнім потоком, …

6
чи існує функція 'block до тих пір, поки умова не стане істинною' в Java?
Я пишу нитку слухача для сервера, і на даний момент я використовую: while (true){ try { if (condition){ //do something condition=false; } sleep(1000); } catch (InterruptedException ex){ Logger.getLogger(server.class.getName()).log(Level.SEVERE, null, ex); } } З наведеним вище кодом я стикаюся з проблемами з функцією запуску, яка їсть весь цикл часу процесора. Функція …

7
Потоки в Python [закрито]
Закрито . Це питання ґрунтується на думках . Наразі відповіді не приймаються. Хочете покращити це питання? Оновіть питання, щоб на нього можна було відповісти фактами та цитатами, відредагувавши цю публікацію . Закрито 6 років тому . Удосконалюйте це питання Які модулі використовуються для написання багатопоточних програм на Python? Мені відомі …

4
Як створити нитку Looper, а потім негайно надіслати йому повідомлення?
У мене є робоча нитка, яка сидить у фоновому режимі і обробляє повідомлення. Щось на зразок цього: class Worker extends Thread { public volatile Handler handler; // actually private, of course public void run() { Looper.prepare(); mHandler = new Handler() { // the Handler hooks up to the current Thread …

9
Чи непотрібні замки в багатопотоковому коді Python через GIL?
Якщо ви покладаєтесь на реалізацію Python, яка має Global Interpreter Lock (тобто CPython) і пише багатопотоковий код, вам справді потрібні блокування? Якщо GIL не дозволяє паралельно виконувати декілька вказівок, чи не буде спільні дані непотрібними для захисту? вибачте, якщо це глупе запитання, але це те, що я завжди дивувався про …

2
SpinWait проти очікування сну. Який із них використовувати?
Чи ефективно це SpinWait.SpinUntil(() => myPredicate(), 10000) на час очікування 10000 мс або Чи ефективніше використовувати Thread.Sleepопитування для тієї самої умови Наприклад, щось на зразок наступної SleepWaitфункції: public bool SleepWait(int timeOut) { Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); while (!myPredicate() && stopwatch.ElapsedMilliseconds < timeOut) { Thread.Sleep(50) } return myPredicate() } …

7
Що є більш ефективним, базовим блокуванням мьютексу чи атомним цілим числом?
Для чогось простого, як лічильник, якщо кількість потоків буде збільшувати кількість. Я читав, що блокування mutex може знизити ефективність, оскільки потоки повинні чекати. Отже, для мене атомний лічильник був би найефективнішим, але я читав, що зсередини це в основному замок? Тож, мабуть, мене бентежить, як будь-який може бути ефективнішим за …

4
Чи гарантовано Task.Factory.StartNew () використовувати інший потік, ніж викличний потік?
Я починаю нове завдання з функції, але я не хотів би, щоб воно працювало в тому ж потоці. Мені байдуже, на якому потоці він працює, поки він інший (тому інформація, наведена в цьому питанні , не допомагає). Чи гарантую я, що наведений нижче код завжди вийде, TestLockперш ніж дозволити Task …

3
Як створити завдання (TPL) із запуском потоку STA?
Використання Thread досить просто Thread thread = new Thread(MethodWhichRequiresSTA); thread.SetApartmentState(ApartmentState.STA); Як виконати те саме за допомогою Завдань у програмі WPF? Ось деякий код: Task.Factory.StartNew ( () => {return "some Text";} ) .ContinueWith(r => AddControlsToGrid(r.Result)); Я отримую InvalidOperationException з Викликаючий потік повинен бути STA, оскільки багато компонентів інтерфейсу вимагають цього.

12
Найпростіший і зрозумілий приклад мінливого ключового слова в Java
Я читаю про мінливе ключове слово на Java і повністю розумію його теоретичну частину. Але те, що я шукаю, - це хороший приклад, який показує, що сталося б, якби змінна не була мінливою і якби вона була. Нижче фрагмент коду не працює належним чином (взято звідси ): class Test extends …

4
Виклик асинхронних методів з неасинхронного коду
Я в процесі оновлення бібліотеки, яка має поверхню API, вбудовану в .NET 3.5. В результаті всі методи є синхронними. Я не можу змінити API (тобто перетворити повернені значення в Завдання), тому що для цього потрібно буде змінити всі абоненти. Тож я залишаюся з тим, як найкраще викликати асинхронні методи синхронно. …

10
Чому синхронізований блок краще, ніж синхронізований метод?
Я почав вчитися синхронізації потоків. Синхронізований метод: public class Counter { private static int count = 0; public static synchronized int getCount() { return count; } public synchronized setCount(int count) { this.count = count; } } Синхронізований блок: public class Singleton { private static volatile Singleton _instance; public static Singleton …

2
Як отримати вказівник інтерфейсу JNI (JNIEnv *) для асинхронних викликів
Я дізнався, що покажчик інтерфейсу JNI (JNIEnv *) дійсний лише в поточному потоці. Припустимо, я розпочав новий потік всередині власного методу; як він може асинхронно надсилати події до методу Java? Оскільки цей новий потік не може мати посилання на (JNIEnv *). Зберігання глобальної змінної для (JNIEnv *), мабуть, не буде …

2
Чи id = 1 - id атомний?
Зі сторінки 291 іспитів із практики програмістів OCP Java SE 6, питання 25: public class Stone implements Runnable { static int id = 1; public void run() { id = 1 - id; if (id == 0) pick(); else release(); } private static synchronized void pick() { System.out.print("P "); System.out.print("Q …

2
C ++ 11: чому std :: condition_variable використовує std :: unique_lock?
Я трохи заплутаний у ролі, std::unique_lockколи працюю з std::condition_variable. Наскільки я зрозумів документацію , std::unique_lockце, в основному, роздутий захисний кожух із можливістю поміняти стан між двома замками. Я досі використовував pthread_cond_wait(pthread_cond_t *cond, pthread_mutex_t *mutex)для цього (мабуть, це те, що використовує STL на posix). Для цього потрібен мьютекс, а не замок. …

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