Sytuacja, w której dwie (lub więcej) operacje wymagają nakładających się zestawów zasobów i żadna z nich nie może zostać zakończona, ponieważ nie mogą uzyskać wszystkich blokad niezbędnych do zakończenia operacji i zwolnienia blokad.
Mam tabelę innoDB, która rejestruje użytkowników online. Jest aktualizowany przy każdym odświeżeniu strony przez użytkownika, aby śledzić, na których stronach się znajduje i kiedy miał datę ostatniego dostępu do witryny. Następnie mam crona, który działa co 15 minut, aby usunąć stare rekordy. Podczas próby uzyskania blokady znaleziono „Zakleszczenie”; spróbuj ponownie …
Nie do końca rozumiem różnicę między Task.Waiti await. Mam coś podobnego do następujących funkcji w usłudze WebAPI ASP.NET: public class TestController : ApiController { public static async Task<string> Foo() { await Task.Delay(1).ConfigureAwait(false); return ""; } public async static Task<string> Bar() { return await Foo(); } public async static Task<string> Ros() …
POSIX pozwala rekursywnym muteksom. Oznacza to, że ten sam wątek może dwa razy zablokować ten sam muteks i nie zablokuje się. Oczywiście musi również odblokować go dwa razy, w przeciwnym razie żaden inny wątek nie może uzyskać muteksu. Nie wszystkie systemy obsługujące pthreads również obsługują rekurencyjne muteksy, ale jeśli chcą …
Podczas pisania aplikacji wielowątkowych jednym z najczęściej występujących problemów są zakleszczenia. Moje pytania do społeczności to: Co to jest impas? Jak je wykrywasz? Czy sobie z nimi radzisz? I wreszcie, jak im zapobiegasz?
Mam następujące cztery testy, a ostatni zawiesza się po uruchomieniu. Dlaczego to się dzieje: [Test] public void CheckOnceResultTest() { Assert.IsTrue(CheckStatus().Result); } [Test] public async void CheckOnceAwaitTest() { Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceAwaitTest() { Assert.IsTrue(await CheckStatus()); Assert.IsTrue(await CheckStatus()); } [Test] public async void CheckStatusTwiceResultTest() { Assert.IsTrue(CheckStatus().Result); // This …
Czy poniższy kod spowoduje zakleszczenie przy użyciu języka C # na platformie .NET? class MyClass { private object lockObj = new object(); public void Foo() { lock(lockObj) { Bar(); } } public void Bar() { lock(lockObj) { // Do something } } }
Mam proces z Select, który zajmuje dużo czasu, w kolejności od 5 do 10 minut. Obecnie nie używam NOLOCK jako wskazówki do silnika bazy danych MS SQL. W tym samym czasie mamy inny proces, który dokonuje aktualizacji i wstawia do tej samej bazy danych i tych samych tabel. Rozpoczął się …
Natknąłem się na kilka najlepszych praktyk dotyczących programowania asynchronicznego przy użyciu słów kluczowych async/ awaitsłów kluczowych języka C # (jestem nowy w C # 5.0). Jedna z udzielonych rad była następująca: Stabilność: poznaj konteksty synchronizacji ... Niektóre konteksty synchronizacji są niewłączane i jednowątkowe. Oznacza to, że w danym czasie można …
Otrzymuję błąd C ++ z wątkami: terminate called without an active exception Aborted Oto kod: #include <queue> #include <thread> #include <mutex> #include <condition_variable> template<typename TYPE> class blocking_stream { public: blocking_stream(size_t max_buffer_size_) : max_buffer_size(max_buffer_size_) { } //PUSH data into the buffer blocking_stream &operator<<(TYPE &other) { std::unique_lock<std::mutex> mtx_lock(mtx); while(buffer.size()>=max_buffer_size) stop_if_full.wait(mtx_lock); buffer.push(std::move(other)); mtx_lock.unlock(); …
Z aplikacji .NET 3.5 / C # chciałbym wychwycić, SqlExceptionale tylko wtedy, gdy jest to spowodowane zakleszczeniami w wystąpieniu SQL Server 2008. Typowy komunikat o błędzie to Transaction (Process ID 58) was deadlocked on lock resources with another process and has been chosen as the deadlock victim. Rerun the transaction. …
Chciałbym wyjaśnić początkującym wątki zakleszczeń. Widziałem w przeszłości wiele przykładów zakleszczeń, niektóre wykorzystujące kod, a niektóre wykorzystujące ilustracje (jak słynne 4 samochody ). Istnieją również klasyczne problemy , które można łatwo zablokować, takie jak The Dining Philosophers , ale mogą one być zbyt złożone, aby prawdziwy nowicjusz mógł je w …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 5 lat temu . Popraw to pytanie Niedawno zadawano mi te pytania w wywiadzie. Odpowiedziałem, że zakleszczenie występuje, gdy …
Natknąłem się na dziwną sytuację, w której użycie równoległego strumienia z lambdą w statycznym inicjatorze zajmuje pozornie wieczność bez użycia procesora. Oto kod: class Deadlock { static { IntStream.range(0, 10000).parallel().map(i -> i).count(); System.out.println("done"); } public static void main(final String[] args) {} } Wydaje się, że jest to minimalne odtworzenie przypadku …
Jak coś odpowiednika lockw C # można zaimplementować w JavaScript? Aby więc wyjaśnić, o czym myślę, prosty przypadek użycia to: Użytkownik klika przycisk B. Bpodnosi zdarzenie onclick. Jeśli Bjest w event-stateoczekiwania wydarzenie dla Bbyć w ready-stateprzed rozmnożeniowego. Jeśli Bjest w ready-state, Bjest zablokowany i ustawiony na event-state, to zdarzenie jest …
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.