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).
Mam pojedynczy duży plik tekstowy, w którym chcę przetworzyć każdą linię (wykonać pewne operacje) i przechowywać je w bazie danych. Ponieważ pojedynczy prosty program trwa zbyt długo, chcę, aby był wykonywany za pomocą wielu procesów lub wątków. Każdy wątek / proces powinien odczytywać RÓŻNE dane (różne wiersze) z tego pojedynczego …
Używam visualVM podłączam wielowątkową aplikację Java, wątek ma status 4, a mianowicie działa, śpi, czekaj, monitor. Co oznacza ten stan monitorowania? Jaka jest różnica między czekaniem a monitorem?
Mam kilka właściwości, na których mam zamiar używać blokad odczytu / zapisu. Mogę je zaimplementować za pomocą klauzuli try finallylub usingklauzuli. W przypadku try finallyzdobycia blokady przed tryi zwolnienia w finally. W usingklauzuli utworzyłbym klasę, która uzyskuje blokadę w swoim konstruktorze i zwalnia w swojej metodzie Dispose. Używam blokad odczytu …
Niedawno zacząłem programować w WPF i napotkałem następujący problem. Nie rozumiem, jak używać tej Dispatcher.Invoke()metody. Mam doświadczenie w tworzeniu wątków i stworzyłem kilka prostych programów Windows Forms, w których właśnie użyłem Control.CheckForIllegalCrossThreadCalls = false; Tak, wiem, że to dość kiepskie, ale były to proste aplikacje monitorujące. Faktem jest, że teraz …
Muszę przeprowadzić serię operacji pobierania i zapisywania bazy danych w mojej aplikacji. Używam NSOperationi NSOperationQueuedo tego samego. To jest scenariusz aplikacji: Pobierz wszystkie kody pocztowe z miejsca. Dla każdego kodu pocztowego pobierz wszystkie domy. Dla każdego domu należy pobrać dane dotyczące mieszkańców Jak powiedziałem, zdefiniowałem NSOperationdla każdego zadania. W pierwszym …
Mam dwa wątki, jeden aktualizujący int, a drugi czytający. Jest to wartość statystyczna, w przypadku której kolejność odczytów i zapisów nie ma znaczenia. Moje pytanie brzmi, czy mimo wszystko muszę zsynchronizować dostęp do tej wartości wielobajtowej? Innymi słowy, część zapisu może zostać zakończona i przerwana, a następnie nastąpi odczyt. Na …
W programie ArrayBlockingQueuewszystkie metody, które wymagają blokady, kopiują ją do finalzmiennej lokalnej przed wywołaniem lock(). public boolean offer(E e) { if (e == null) throw new NullPointerException(); final ReentrantLock lock = this.lock; lock.lock(); try { if (count == items.length) return false; else { insert(e); return true; } } finally { …
Jak zaimplementowano ThreadLocal? Czy jest zaimplementowany w Javie (przy użyciu pewnej współbieżnej mapy z ThreadID do obiektu), czy może używa jakiegoś haka JVM, aby zrobić to bardziej wydajnie?
Jak duża jest pula wątków Scali dla kontraktów terminowych? Moja aplikacja Scala zarabia wiele milionów future {}i zastanawiam się, czy jest coś, co mogę zrobić, aby je zoptymalizować, konfigurując pulę wątków. Dziękuję Ci.
Robię bardzo głupi benchmark na ReaderWriterLock z tym kodem, w którym czytanie odbywa się 4x częściej niż pisanie: class Program { static void Main() { ISynchro[] test = { new Locked(), new RWLocked() }; Stopwatch sw = new Stopwatch(); foreach ( var isynchro in test ) { sw.Reset(); sw.Start(); Thread …
Uruchamiam aplikację C # i podczas wykonywania otrzymuję następujący błąd: Środowisko CLR nie mogło przejść z kontekstu COM 0x20e480 do kontekstu COM 0x20e5f0 przez 60 sekund. Wątek będący właścicielem kontekstu / apartamentu docelowego najprawdopodobniej albo wykonuje oczekiwanie bez pompowania, albo przetwarza bardzo długotrwałą operację bez pompowania komunikatów systemu Windows. Ta …
Jaka jest różnica między poniższymi ThreadPool.QueueUserWorkItem vs Task.Factory.StartNew Jeśli powyższy kod jest wywoływany 500 razy dla jakiegoś długotrwałego zadania, czy oznacza to, że wszystkie wątki puli wątków zostaną zajęte? A może TPL (druga opcja) będzie wystarczająco inteligentna, aby po prostu zajmować wątki mniejsze lub równe liczbie procesorów?
Dlaczego Threadklasa została zaimplementowana jako zwykła klasa, a nie klasa abstrakcyjna z run()metodą abstrakcyjną. Czy może to spowodować jakieś problemy? A może ma to jakiś sens? Ponadto Thread.start()metoda ma być bardzo specyficzną metodą, której funkcjonalności nie może zaimplementować żadna inna klasa (jeśli się nie mylę). Dlatego myślę, że to finalsłowo …
Napisałem proste programy wielowątkowe w następujący sposób: static bool finished = false; int func() { size_t i = 0; while (!finished) ++i; return i; } int main() { auto result=std::async(std::launch::async, func); std::this_thread::sleep_for(std::chrono::seconds(1)); finished=true; std::cout<<"result ="<<result.get(); std::cout<<"\nmain thread id="<<std::this_thread::get_id()<<std::endl; } Zachowuje się normalnie w trybie debugowania w Visual Studio lub -O0w …
Jeśli mam program działający z wątkami i wywołujący fork()system uniksowy, czy wątki są kopiowane? Wiem, że pamięć wirtualna dla bieżącego procesu jest kopiowana 1: 1 do nowego spawnowanego procesu. Wiem, że wątki mają swój własny stos w wirtualnej pamięci procesu. Dlatego przynajmniej stos wątków powinien zostać skopiowany. Nie wiem jednak, …
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.