dotnetomaniak.pl - Artykuły z tagiem synchronizacja

Mieliście kiedyś taką sytuację przy Apache Cassandra, że aplikacja robi UPDATE na bazie danych ale nigdzie nie ma śladu po tym UPDATE? Jak już jej trochę poużywałeś, to prawdopodobnie znasz temat. Jak dopiero z nią zaczynasz… W projekcie używamy Cassandry która, póki co, na każdym ze środowisk składa się z jednego node-a. Każdy z serwisów ma swój keyspace. Wszystko pięknie działało. Nie było problemów. Do czasu. Była potrzeba przepisania jednego z serwisów i tymczasowo dwa serwisy (a czasami jeden ser...

Źródło: wiadrodanych.pl
Dziel się z innymi:
Gdy Kasia gubi CQL-e - Apache Cassandra i NTP - Wiadro Danych

Bazy danych i XML 1651 dni, 3 godziny, 40 minut temu mszymczyk 70 źrodło rozwiń

W .NET można anulować wątki za pomocą tokena. Oczywiście nie należy używać metody Abort czy Cancel, ale o tym już wiele razy pisałem – w skrócie nie wiadomo kiedy taki wątek zostanie przerwany. Użycie tokena jest proste tzn. (przykład MSDN):class Program { staticvoid Main() { var tokenSource2 =new CancellationTokenSource(); CancellationToken ct = tokenSource2.Token; var task = Task.Factory.StartNew(() => { // Were we already canceled? ct.T...

Dziel się z innymi:
Piotr Zieliński » Anulowanie wątków a synchronizacja

Sztuka programowania 3808 dni, 1 godzinę, 58 minut temu Paweł Łukasik 140 źrodło rozwiń

Często można usłyszeć, że przypisania są zawsze bezpieczne w wielowątkowości i powinniśmy martwić się np. inkrementacją. Jest to prawda dla Int32 ale dla long już nie zawsze. Przykład:internalclass Program { privatestaticlong _x =0; privatestaticvoid Main(string[] args) { Task.Factory.StartNew(Task1); Task.Factory.StartNew(Task2); Thread.Sleep(5000); } privatestaticvoid Task2() { while (true) { Console.WriteLine(_x); } } privat...

Dziel się z innymi:
Piotr Zieliński » Code review: synchronizacja danych, przypisanie

Sztuka programowania 3907 dni, 2 godziny, 6 minut temu pzielinski 137 źrodło rozwiń

A to niespodzianka…serwery w chmurze czasu nie liczą – czyżby były tak szczęśliwe? Wracając do meritum sprawy…jeżeli macie kilka…dziesiąt serwerów w Azure, które robią coś razem zauważycie mały problem… niezgodność czasu. W przypadku serwerów jakie mamy w projekcie PlaceChallenge, to było od 2 do 47 sekund – powiedziałbym, że dość dużo. Po rozmowie z miłym Panem z Indii wiadomo co jest problemem… problem to Hyper-V, który hostuję te maszyny. Hyper-V (wirtualizator) ma problem z odpowiednim synchro...

Źródło: marcinborecki.pl
Dziel się z innymi:
Azure i jego problem z liczeniem czasu–czyli jak nauczyć chmurę, że każda sekunda ma znaczenie | Marcin Borecki - Making a difference everyday

Architektura 3927 dni, 21 godzin, 47 minut temu mborecki 125 źrodło rozwiń

AutoResetEvent\ManualResetEvent może być używany do synchronizacji międzyprocesowej tak samo jak np. mutex. Posiada podobny zestaw metod do tworzenia obiektu z nazwą oraz późniejszego jego otwierania. Aby móc go użyć do synchronizacji międzyprocesowej należy oczywiście nadać obiektowi nazwę – tak samo jak to jest z Mutex. W tym problem, że konstruktory ManualResetEvent czy AutoResetEvent nie przyjmują takich parametrów. Zaglądając jednak do dokumentacji dowiemy się, że:publicsealedclass ManualResetEvent...

Dziel się z innymi:
Piotr Zieliński » AutoResetEvent\ManualResetEvent–synchronizacja między procesami

Sztuka programowania 3961 dni, 2 godziny, 40 minut temu pzielinski 67 źrodło rozwiń

Klasa Monitor to chyba najpopularniejszy, najłatwiejszy i często najlepszy sposób synchronizacji danych w .NET. Większość programistów używa słowa kluczowego lock zamiast bezpośrednio Monitor.Enter. W większości przypadków jest to poprawne i zdecydowanie najbardziej przejrzyste. Dzisiaj chciałbym przyjrzeć się kilku sposobom konstrukcji Monitor.Enter\MonitorExit. Pierwszy, zdecydowanie najgorszy to:Monitor.Enter(_sync); // sekcja krytyczna tutaj Monitor.Exit(_sync); W powyższym kodzie brakuje obsługi...

Piotr Zieliński » Code Review: Monitor.Enter – kilka wzorców

Sztuka programowania 3988 dni, 4 godziny, 3 minuty temu pzielinski 142 źrodło rozwiń

Wielokrotnie pisałem o różnych metodach definiowania sekcji krytycznej w kodzie. Do dyspozycji mamy spinning, który nie usypia wątku. Tak naprawdę dla systemu Windows, taki wątek wciąż istnieje i wykonuje pracę – innymi słowy marnuje  czas CPU. Jeśli chcemy zatrzymać wątek na krótko wtedy jest to bardzo wydajne ponieważ nie musimy zmieniać kontekstu (BARDZO kosztowne), korzystać z funkcji Windows (spinning to czysta metoda .NET) czy planować (scheduling) następnych wątków. Jeśli mechanizmy takie jak spin...

Dziel się z innymi:
Piotr Zieliński » Wydajność: spinning a synchronizacja kernel

Sztuka programowania 4052 dni, 19 godzin, 33 minuty temu pzielinski 80 źrodło rozwiń

Napiszemy prosty program wielowątkowy, zrobimy synchronizację z głównym wątkiem (aby czekał dokładnie do momentu zakończenia drugiego wątku) i dodatkowo prześlemy parametr do nowo tworzonego wątku. To wszystko jest często niezbędne w aplikacjach i warto wiedzieć jak to się robi. Poprzednio wątki synchronizowane były za pomocą zmiennej bool. Nie jest to dobre rozwiązanie. Dodatkowo wątek główny musiał sprawdzać co pewien czas wartość tej zmiennej. Tutaj rozwiążemy to nieco bardziej optymalnie. Stw...

Dziel się z innymi:
C# na blache: Program wielowątkowy

Sztuka programowania 4310 dni, 16 minut temu sikor02 322 źrodło rozwiń

W ostatnim poście pisałem o różnych mechanizmach opartych o Spin. Zachęcam do przejrzenia ostatnich wpisów ponieważ bez tego trudno będzie zrozumieć dzisiejszy post. SpinWait jest strukturą, w której najważniejsza metoda to SpinOnce. SpinOnce przez pierwsze 10 wywołań wykonuje  klasyczny Spin (patrz poprzednie posty) dzięki czemu nie musimy obawiać się koszty związanego z uśpieniem wątku, zmianą kontekstu itp. SpinOnce jest jednak na tyle inteligentny, że po 10 wywołaniach zmienia swoje zachowanie:Po 10...

Dziel się z innymi:
Piotr Zieliński » Struktura SpinWait i synchronizacja bez użycia blokad

Programowanie rozproszone 4336 dni, 22 godziny, 46 minut temu pzielinski 52 źrodło rozwiń

W ostatnich postach opisuje różne mechanizmy synchronizacji w c#. Jak widać, jest tego na prawdę wiele i sama znajomość słowa lock nie wystarcza jeśli poważnie myśli się o algorytmach współbieżnych. Dziś kolejna metoda synchronizacji a mianowicie klasa CountdownEvent. Ostatnie posty oprócz wprowadzenia do wspomnianych klas stanowią wstęp do kolekcji współbieżnych, które zamierzam omówić wkrótce. Konstruktor CountdownEvent przyjmuje liczbę całkowita (zwykle większą od 0), która stanowi wartość początkową...

Dziel się z innymi:
Piotr Zieliński » Synchronizacja za pomocą CountdownEvent

Sztuka programowania 4343 dni, 16 godzin, 58 minut temu pzielinski 112 źrodło rozwiń

Dziś kolejny post o synchronizacji w c#. Semafor to bardzo popularna forma limitowania liczby wątków, które mogą mieć dostęp do danego kodu. Nie chcę omawiać tutaj podstaw semafora, ale myślę, że warto przypomnieć ogólną zasadę. Pseudokod (źródło Wikipedia):procedure V (S : Semaphore); begin (* Operacja atomowa: inkrementacja semafora *) S := S +1; end; (* Operacja atomowa: dekrementacja semafora ) procedure P (S : Semaphore); begin ( Cała operacja jest atomowa *) repeat Wait()...

Dziel się z innymi:
Piotr Zieliński» Semafor w c#

Sztuka programowania 4350 dni, 14 godzin, 41 minut temu pzielinski 262 źrodło rozwiń

W .NET istnieje wiele sposobów synchronizacji pracy wątków. O dużej części z nich pisałem już na blogu (z ciekawszych np. klasa Barrier ). Najpopularniejszym i najłatwiejszym sposobem jest użycie słowa kluczowego lock. W wielu przypadkach jest to najlepszy i najbezpieczniejszy wybór. SpinLock to zupełnie inne podejście. W przypadku lock, wątek jest usypiany i budzony gdy przyjdzie na niego kolej. Ma to kilka poważnych wad. Wiążą się one z szeregowaniem oraz zmianą kontekstu. Zmiana kontekstu jest dość c...

Dziel się z innymi:
Piotr Zieliński » Synchronizacja za pomocą SpinLock

Inne 4353 dni, 10 godzin, 46 minut temu pzielinski 197 źrodło rozwiń

Mechanizmy wspierające tworzenie aplikacji wielowątkowych są obecne w .NET od zarania dziejów. Istnieją klasy opakowujące funkcje i obiekty systemowe, są także mechanizmy dostępne tylko w .NET i udostępnione w postaci wygodnych konstrukcji językowych. Jedną z takich konstrukcji obecnych w C# jest słowo kluczowe lock, które usprawnia synchronizację między wątkami praktycznie bez wpływu na wydajność. Lock przeszedł drobny lifting w wersji 4.0, jednak szczegóły omówimy na końcu. Metoda 1: Kod haszowy & ...

Źródło: zine.net.pl
Dziel się z innymi:
mgrzeg.net - Admin on Rails :) : lock() internals

Inne 4759 dni, 2 godziny, 18 minut temu Paweł Łukasik 89 źrodło rozwiń

Axum to kolejny inkubacyjny projekt z Redmond, o którym warto wspomnieć. Model agenta, który przedstawiłem w poprzednim poście, został przez giganta potraktowany całkiem poważnie. Solidna implementacja, skalowalność, wtyczka do Visual Studio - to wszystko daje całkiem duże pole do popisu, ale powoli...

Źródło: blog.fones.pl
Dziel się z innymi:
Fones.Blog > Axum – Agenci w akcji

Programowanie rozproszone 4968 dni, 2 godziny, 2 minuty temu fones 20 źrodło rozwiń

Z implementacją równoległych zadań można sobie poradzić na wiele różnych sposobów. Zazwyczaj jednak instalujemy blokady, monitory, tworzymy transakcje, oplatamy synchroniczny kod. Co by się jednak stało, gdyby całe takie podejście odwrócić do góry nogami? Takich przełomowych projektów było wiele, oferowały nowy model pisania równoległych aplikacji, bez pamięci wspólnej i z wymianą komunikatów. W dzisiejszym wpisie chciałbym przedstawić Wam Model Agenta.

Źródło: blog.fones.pl
Dziel się z innymi:
Fones.Blog > Agent z wiadomością

Programowanie rozproszone 5017 dni, 23 godziny, 25 minut temu fones 67 źrodło rozwiń

W poprzednim poście przedstawiłem Wam kilka istniejących implementacji STM, teraz, chciałbym dopełnić tą listę o kilka, równie ważnych, rozwiązań.

Źródło: blog.fones.pl
Dziel się z innymi:
Fones.Blog > Pamięć Transakcyjna – Istniejące implementacje – cz.2

Programowanie rozproszone 5020 dni, 16 godzin, 54 minuty temu fones 44 źrodło rozwiń

Ten artykuł pochodzi z serii przygotowań do egzaminu 70-503: Windows Communication Foundation. Ci z Was, którzy obsługiwali już wątki w .NET wiedzą, że nie jest to specjalnie skomplikowane. Najczęściej problemy występują przy obsłudze kontrolek Windows Forms, ponieważ ich właściwości mogą być zmieniane tylko w wątku, który je stworzył. Innym problemem jest wykorzystywanie lokalnej pamięci wątków do przechowywania informacji o kontekście, gdy proces nieoczekiwanie zmienia wątki, te dane mogą zniknąć. Z te...

Źródło: eastgroup.pl
Dziel się z innymi:
70-503: Synchronization | Eastgroup.pl

Programowanie rozproszone 5077 dni, 3 godziny, 32 minuty temu danielplawgo 71 źrodło rozwiń

SyncRoot to właściwość zdefiniowana na poziomie interfejsu ICollection służąca do synchronizowania operacji wykonywanych na kolekcjach przy pomocy słowa kluczowego lock lub jawnie przy pomocy monitora. Czemu jednak należy używać tej właściwości zamiast instancji kolekcji, czyli czemu zalecany jest taki kod: Kiedy postawiłem sobie to pytanie okazało się, że odpowiedź nie jest dla mnie oczywista. Wizyta w dokumentacji MSDN nic nie pomogł...

Dziel się z innymi:
.NET C# programowanie - Blog Michała Komorowskiego: Czemu należy używać właściwości SyncRoot?

Inne 5385 dni, 13 godzin, 22 minuty temu Paweł Łukasik 68 źrodło rozwiń

Trochę informacji o tym jak możemy synchronizować procesy i wątki w .NET.

Prymitywy synchronizacyjne - jak dobrze je znamy?

Inne 5518 dni, 3 godziny, 17 minut temu Paweł Łukasik 87 źrodło rozwiń

Najaktywniejsi w tym miesiącu