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).
Załóżmy, że zaczynam std::threada detach(), więc wątek kontynuuje wykonywanie, mimo że ten, std::threadktóry kiedyś go reprezentował, wykracza poza zakres. Załóżmy ponadto, że program nie ma niezawodnego protokołu do przyłączania się do odłączonego wątku 1 , więc odłączony wątek nadal działa po zakończeniu main(). Nie mogę znaleźć niczego w standardzie (a …
Ogólnie rzecz biorąc, for int num, num++(lub ++num), jako operacja odczytu-modyfikacji-zapisu, nie jest atomowa . Ale często widzę kompilatory, na przykład GCC , generują dla niego następujący kod ( spróbuj tutaj ): Ponieważ wiersz 5, który odpowiada, num++jest jedną instrukcją, czy możemy wywnioskować, że w tym przypadku num++ jest atomowa …
AsyncTask wykonywanie złożonych zadań w innym wątku to świetna sprawa. Ale gdy nastąpi zmiana orientacji lub inna zmiana konfiguracji, gdy AsyncTasknadal działa, prąd Activityjest niszczony i restartowany. Ponieważ instancja programu AsyncTaskjest połączona z tym działaniem, kończy się niepowodzeniem i powoduje wyświetlenie okna komunikatu „wymuś zamknięcie”. Dlatego szukam jakiejś „najlepszej praktyki”, …
Mam następującą klasę. class Test{ public HashSet<string> Data = new HashSet<string>(); } Muszę zmienić pole „Dane” z różnych wątków, więc chciałbym poznać opinie na temat mojej obecnej implementacji bezpiecznej wątkowo. class Test{ public HashSet<string> Data = new HashSet<string>(); public void Add(string Val){ lock(Data) Data.Add(Val); } public void Remove(string Val){ lock(Data) …
Czy istnieje równoważne polecenie w GDB do polecenia „! Process 0 7” programu WinDbg? Chcę wyodrębnić wszystkie wątki w pliku zrzutu wraz z ich śladami wstecznymi w GDB. „Wątki informacyjne” nie wyświetlają śladów stosu. Więc czy istnieje polecenie, które to robi?
Oprócz oczywistych różnic: Użyj, enumerateObjectsUsingBlockgdy potrzebujesz zarówno indeksu, jak i obiektu Nie używaj, enumerateObjectsUsingBlockgdy musisz zmodyfikować zmienne lokalne (myliłem się, zobacz odpowiedź bbum) Czy enumerateObjectsUsingBlockogólnie uważa się, że lepiej czy gorzej, kiedy for (id obj in myArray)również zadziała? Jakie są zalety / wady (na przykład czy jest bardziej lub mniej …
W języku niskiego poziomu (C, C ++ lub czymkolwiek): mam wybór pomiędzy posiadaniem kilku muteksów (takich jak to, co daje mi pthread lub cokolwiek zapewnia natywna biblioteka systemowa) lub jednym dla obiektu. Jak skuteczne jest blokowanie muteksu? Tj. Ile jest prawdopodobnych instrukcji asemblera i ile czasu one zajmują (w przypadku, …
Jaki jest sposób uzyskania licznika bezpiecznego wątku w języku C # z najlepszą możliwą wydajnością? To jest tak proste, jak to tylko możliwe: public static long GetNextValue() { long result; lock (LOCK) { result = COUNTER++; } return result; } Ale czy są szybsze alternatywy?
Zastanawiałem się, czy masz metodę statyczną, która nie jest zsynchronizowana, ale nie modyfikuje żadnych zmiennych statycznych, czy jest bezpieczna wątkowo? A co jeśli metoda tworzy w niej zmienne lokalne? Na przykład, czy poniższy kod jest bezpieczny dla wątków? public static String[] makeStringArray( String a, String b ){ return new String[]{ …
Czy poniższa implementacja Singletonwątku (Meyers 'Singleton) przy użyciu leniwej inicjalizacji jest bezpieczna? static Singleton& instance() { static Singleton s; return s; } Jeśli nie, dlaczego i jak zabezpieczyć wątek?
Mam metodę, która zwraca wartość Listprzyszłości List<Future<O>> futures = getFutures(); Teraz chcę poczekać, aż wszystkie futures zostaną pomyślnie przetworzone lub którekolwiek z zadań, których dane wyjściowe zostaną zwrócone przez przyszłość, zgłosi wyjątek. Nawet jeśli jedno zadanie rzuca wyjątek, nie ma sensu czekać na inną przyszłość. Byłoby proste podejście wait() { …
Mam nadzieję, że ktoś może mnie oświecić, co może być przyczyną tego błędu: Podjęto próbę odczytania lub zapisu chronionej pamięci. Często wskazuje to na uszkodzenie innej pamięci. Naprawdę nie mogę wysłać kodu, ponieważ ten błąd wydaje się być wyrzucany w dowolnym przypadkowym obszarze aplikacji. Aplikacja będzie działać w dowolnym miejscu …
Erg, próbuję znaleźć te dwie metody w BCL przy użyciu reflektora, ale nie mogę ich zlokalizować. Jaka jest różnica między tymi dwoma fragmentami? ZA: IEnumerable<string> items = ... Parallel.ForEach(items, item => { ... }); B: IEnumerable<string> items = ... foreach (var item in items.AsParallel()) { ... } Czy istnieją różne …
Wszyscy ostrzegają, że Java DateFormat nie jest bezpieczna dla wątków i rozumiem tę koncepcję teoretycznie. Ale nie jestem w stanie wyobrazić sobie, jakie faktyczne problemy możemy napotkać z tego powodu. Powiedzmy, że mam pole DateFormat w klasie i to samo jest używane w różnych metodach w klasie (formatowanie dat) w …
C ++ 17 wprowadził nową klasę blokady o nazwie std::scoped_lock. Sądząc po dokumentacji, wygląda podobnie do już istniejącej std::lock_guardklasy. Jaka jest różnica i kiedy powinienem go używać?
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.