Wielowątkowość to zdolność komputera lub programu do wykonywania pracy jednocześnie lub asynchronicznie poprzez wykorzystanie wielu współbieżnych strumieni wykonania (ogólnie nazywanych wątkami).
Jeśli istnieją dwa wątki uzyskujące dostęp do zmiennej globalnej, wiele samouczków mówi, że zmienna jest ulotna, aby zapobiec buforowaniu zmiennej przez kompilator w rejestrze, a tym samym niepoprawnej aktualizacji. Jednak dwa wątki, które uzyskują dostęp do wspólnej zmiennej, są czymś, co wymaga ochrony przez mutex, prawda? Ale w takim przypadku …
Kiedy potrzebuję czegoś do asynchronicznego działania , na przykład długotrwałego zadania lub logiki korzystającej z sieci, lub z jakiegokolwiek powodu, uruchomienie nowego wątku i uruchomienie działa dobrze. Utworzenie Handlera i uruchomienie go również działa. Co za różnica? Kiedy powinienem używać każdego z nich? Jakie są zalety / powody używania a, …
Mam 2 macierze i muszę je pomnożyć, a następnie wydrukować wyniki z każdej komórki. Jak tylko jedna komórka jest gotowa, muszę ją wydrukować, ale na przykład muszę wydrukować komórkę [0] [0] przed komórką [2] [0], nawet jeśli wynik [2] [0] jest najpierw gotowy . Więc muszę to wydrukować na zamówienie. …
Tworzę aplikację Java z wątkiem logiki aplikacji i wątkiem dostępu do bazy danych. Oba trwają przez cały okres istnienia aplikacji i oba muszą działać w tym samym czasie (jeden rozmawia z serwerem, jeden z użytkownikiem; gdy aplikacja jest w pełni uruchomiona, potrzebuję ich obu do działania). Jednak podczas uruchamiania muszę …
Mam aplikację z 4 wątkami działającymi na tym samym kodzie. Jednak kiedy stąpam, przeskakuje między różnymi wątkami. Jak mogę zablokować go w jednym wątku, aby inne wątki były ignorowane podczas debugowania?
Często widzę, że wspomniano, że Thread.Sleep();nie należy go używać, ale nie rozumiem, dlaczego tak jest. Jeśli Thread.Sleep();może powodować problemy, czy są jakieś alternatywne rozwiązania z takim samym skutkiem, które byłyby bezpieczne? na przykład. while(true) { doSomework(); i++; Thread.Sleep(5000); } inny to: while (true) { string[] images = Directory.GetFiles(@"C:\Dir", "*.png"); foreach …
Wydaje się, że niemożliwe jest utworzenie buforowanej puli wątków z ograniczeniem liczby wątków, które może ona utworzyć. Oto jak static Executors.newCachedThreadPool jest zaimplementowane w standardowej bibliotece Java: public static ExecutorService newCachedThreadPool() { return new ThreadPoolExecutor(0, Integer.MAX_VALUE, 60L, TimeUnit.SECONDS, new SynchronousQueue<Runnable>()); } Tak więc, używając tego szablonu do utworzenia puli wątków …
Zamknięte . To pytanie jest oparte na opinii . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby można było na nie odpowiedzieć, podając fakty i cytaty, edytując ten post . Zamknięte 1 rok temu . Popraw to pytanie Próbowałem nauczyć się programowania wielowątkowego w C # i …
Mam obiekt z metodą o nazwie StartDownload(), która uruchamia trzy wątki. Jak mogę otrzymać powiadomienie o zakończeniu wykonywania każdego wątku? Czy istnieje sposób, aby dowiedzieć się, czy jeden (lub cały) wątek jest zakończony lub nadal jest wykonywany?
Właśnie odkryłem, że this.setState()funkcja react w dowolnym komponencie jest asynchroniczna lub jest wywoływana po zakończeniu funkcji, w której została wywołana. Teraz przeszukałem i znalazłem tego bloga ( setState () Operacja mutacji stanu może być synchroniczna w ReactJS ) Tutaj odkrył, że setStatejest to asynchronizacja (wywoływana, gdy stos jest pusty) lub …
Utworzyłem kolejkę szeregową w ten sposób: dispatch_queue_t _serialQueue = dispatch_queue_create("com.example.name", DISPATCH_QUEUE_SERIAL); Jaka jest różnica między dispatch_asyncnazywane tak dispatch_async(_serialQueue, ^{ /* TASK 1 */ }); dispatch_async(_serialQueue, ^{ /* TASK 2 */ }); I dispatch_syncdzwoniłeś w ten sposób w tej kolejce szeregowej? dispatch_sync(_serialQueue, ^{ /* TASK 1 */ }); dispatch_sync(_serialQueue, ^{ /* …
Rozważ hipotetyczną metodę obiektu, który działa za Ciebie: public class DoesStuff { BackgroundWorker _worker = new BackgroundWorker(); ... public void CancelDoingStuff() { _worker.CancelAsync(); //todo: Figure out a way to wait for BackgroundWorker to be cancelled. } } Jak można czekać, aż BackgroundWorker zostanie ukończony? W przeszłości ludzie próbowali: while (_worker.IsBusy) …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.