dotnetomaniak.pl

dotnetomaniak.pl - Artykuły z tagiem Wielowątkowość

Biblioteka TPL istnieje już od jakiegoś czasu i raczej jest znana dla większości programistów. W .NET 4.5 Microsoft poszedł jednak o kilka kroków do przodu i dostarczył tzw. TPL DataFlows. Jest on oparty oczywiście na bibliotece TPL, dostarcza jednak kilka bardzo ciekawych klas, przydatnych do modelowania współbieżnego. Czasami algorytmy składają się z kilku “bloków”, które należy ze sobą synchronizować. TPL DataFlows służy do modelowania przepływu między różnymi wątkami. We wczesnych wersjach .NET byliś...

Dziel się z innymi:
Piotr Zieliński » TPL Dataflows–wprowadzenie (część I)

Sztuka programowania 1299 dni, 21 godzin, 36 minut temu pzielinski 164 rozwiń

Dzisiaj znów trochę od strony teoretycznej postaram wyjaśnić jak działają priorytety wątków w systemach Windows. Każdy chyba słyszał o tym, że wątkowi można nadać priorytet. Nie każdy natomiast wie, jaki jest zakres oraz jak wygląda dokładnie ich interpretacja. Przede wszystkim mamy do czynienia z dwoma typami priorytetów, które składają się na końcową wartość używaną przez task scheduler. Pierwszy komponent dotyczy procesu i jest to tzw. klasa priorytetu. W Windows możemy wyróżnić następujące klasy:  ...

Dziel się z innymi:
Piotr Zieliński » Wielowątkowość i priorytety

Sztuka programowania 1312 dni, 12 godzin, 55 minut temu pzielinski 120 rozwiń

W .NET do synchronizacji dostępnych jest wiele mechanizmów. W dzisiejszym wpisie chciałbym przedstawić różnice między semaforem a muteksem. Na pierwszy rzut oka, wyglądają one identycznie. Przykład:class Program { staticvoid Main(string[] args) { Mutex mutex =new Mutex(); mutex.WaitOne(); Console.WriteLine("Sekcja krytyczna tutaj"); mutex.ReleaseMutex(); Semaphore semaphore=new Semaphore(1,1); semaphore.WaitOne(); Console.WriteLine("Sekcja krytyczn...

Dziel się z innymi:
Piotr Zieliński » Różnice między Mutex a Semaphore

Sztuka programowania 1331 dni, 5 godzin, 42 minuty temu pzielinski 147 rozwiń

Wielowątkowość jest bardzo skomplikowanym tematem. W celu napisania prostego kodu wystarczy znać naprawdę niewiele konstrukcji. Sytuacja znaczącą komplikuje się gdy mamy wysokie wymagania odnoście pamięci czy CPU. RegisterWaitForSingleObject jest metodą dość mało popularną a przydatną gdy chcemy oszczędzić trochę pamięci.Wyobraźmy sobie, że mamy kod, który chcemy wykonać wyłącznie w momencie zasygnalizowania przez WaitHandle  (AutoResetEvent, Semafor itp.). Jeśli operacja wewnątrz zajmuje trochę czasu w...

Dziel się z innymi:
Piotr Zieliński » Metoda ThreadPool.RegisterWaitForSingleObject

Sztuka programowania 1335 dni, 4 godziny, 15 minut temu pzielinski 119 rozwiń

Operacje na plikach mogą być bardzo czasochłonne. Z tego względu, dobrym zwyczajem jest umieszczenie kodu w osobnym wątku. Często popełnianym błędem jest samodzielne tworzenie wątku:internalstaticclass Sample { publicstaticvoid Main() { var reader =new FileStream(@"c:\setup\1.txt", FileMode.Open); Task.Factory.StartNew(()=>ReadAsync(reader)); } privatestaticvoid ReadAsync(Stream reader) { byte[]buffer=newbyte[100]; reader.Read(buffer, 0, 100); reader.Clos...

Dziel się z innymi:
Piotr Zieliński » Code Review: Asynchroniczne strumienie danych

Sztuka programowania 1358 dni, 19 godzin, 29 minut temu pzielinski 159 rozwiń

W celu optymalizacji każdy procesor posiada swój cache. Temat jest dosyć rozbudowany bo zwykłe cache jest podzielony na kilka warstw aby przyśpieszyć dostęp do niego. W dzisiejszym w poście chciałbym wprowadzić pojęcie cache line co jest tak naprawdę po prostu wpisem w pamięci podręcznej. Jeśli procesor czyta jakieś dane to umieszcza je w cache line. Cache line to nie tylko jedna, pojedyncza zmienna a na przykład 64 bajty. Jeśli zatem czytamy pojedynczą zmienną Int32,  w rzeczywistości procesor przeczyta...

Dziel się z innymi:
Piotr Zieliński » CPU, caching a wydajność.

Sztuka programowania 1365 dni, 5 godzin, 43 minuty temu pzielinski 194 rozwiń

Niniejszy post jest ostatnim z serii "Implementacja przepływu aplikacji" będącej jedną z czterech głównych zagadnień egzaminu MCSD: 70-480. Zajmiemy się w nim omówieniem, wprowadzonego w HTML5, API "Web Workers", pozwalającego na uruchamianie skryptów "w tle". Dowiemy się więc jak wystartować i jak zakończyć działanie Web Workera; w jaki sposób przekazywać dane do procesu Web Workera i jak ustawić dla niego timeout i interwał; poznamy także sposób na rejestrację obserwatora zdarzenia dla Web Workera, a t...

burczu programator - blog: Wielowątkowy JavaScript czyli procesy "Web Worker"

Web 1374 dni, 5 godzin, 22 minuty temu burczu 74 rozwiń

Dziś kolejny post z ostatniego cyklu o o wielowątkowości.  Myślę, że Thread.Sleep jest znany każdemu – służy po prostu do uśpienia wątku. Na przykład:

Dziel się z innymi:
Piotr Zieliński » Thread.SpinWait() a Thread.Sleep()

Sztuka programowania 1644 dni, 17 godzin, 50 minut temu pzielinski 155 rozwiń

.NET 4.5 przynosi wiele zmian. Szczególnie ciekawym jest nowe podejście do programowania asynchronicznego, znacząco ułatwiające prace programisty z callback’ami itp. W zasadzie nie ma już callback’ow – kod asynchroniczny niewiele różni się od synchronicznego. Zachęcam do przeczytania mojego nowego artykułu: http://msdn.microsoft.com/pl-pl/library/programowanie-asynchroniczne-w-net-4-5.aspxExplore posts in the same categories:C#, Wielowątkowość This entry was posted ...

Dziel się z innymi:
Piotr Zieliński » Programowanie asynchroniczne w .NET 4.5

Programowanie rozproszone 1699 dni, 12 godzin, 18 minut temu pzielinski 380 rozwiń

Hej, wzięło mi się na przetestowanie rzeczywistej wydajności owej funkcji. Jeszcze produkcyjnie nie używałem jej więc postanowiłem użyć jej praktycznie w teście.

Dziel się z innymi:
Parallel.For testowanie « Netmajor's Tech Blog

Inne 1699 dni, 12 godzin, 18 minut temu netmajor 123 rozwiń

autor: Ostatnio przeglądając kod udało mi się znaleźć następujący fragment:lock(this){// Do something} Do zsynchronizowania dostępu do współdzielonego zasobu używany jest obiekt, w którym występuje ten fragment kodu. Teoretycznie fragment ten jest poprawny. Co więcej w programie nie wystąpił żaden problem z zakleszczeniem. Przeglądając literaturę możemy natrafić na następujące przykłady: 1. W O’Reilly Programming C# można spotkać następujący przykład użycia słowa kluczowego ...

Dziel się z innymi:
lock (this) – za i przeciw

Programowanie rozproszone 1782 dni, 20 minut temu paduda 394 rozwiń

O wielowątkowości pisałem już niejednokrotnie. Niestety w żadnym z moich postów, nie wyjaśniłem podstawowych pojęć związanych z współbieżnością. Oczywiście jeśli wykorzystujemy wątki do prostych zadań typu asynchroniczne połączenie z usługą, poważniejszych problemów nie doświadczymy. W przypadku jednak nieco bardziej zaawansowanych algorytmów, musimy zawsze badać nasz kod pod kątem: 1. Zakleszczenie (deadlock) – występuję gdy wątek A czeka aż wątek B skończy swoją operację a wątek B czeka aż wątek A zako...

Dziel się z innymi:
Piotr Zieliński » Wielowątkowość: podstawowe pojęcia – deadlock, livelock, starvation.

Inne 1836 dni, 36 minut temu pzielinski 291 rozwiń

Pisząc(powoli bo powoli, ale pisząc) rozgrywkę sieciową do Kingdoms Clash.NET, odkładałem „na potem” synchronizację dostępu do danych. Nie używam wielu wątków – ot 2 per aplikacja – ale problem dał się we znaki. W końcu stwierdziłem, że nie ma co się bawić w odkładanie tego i trzeba ...

Źródło: blog.fiolek.org
Dziel się z innymi:
Programowanie wielowątkowe, czyli zabezpieczaj się od razu | Fiołek – blog

Programowanie rozproszone 2041 dni, 11 godzin, 51 minut temu paduda 216 rozwiń

W ostatniej wersji C# pojawiła się możliwość zrównoleglenia obliczeń w bardzo prosty sposób. Pętlę:for(int n =0; n <8; n++){ Console.WriteLine("Normal - iteracja {0} wątek {1}", n, Thread.CurrentThread.ManagedThreadId);} można zastąpić następującą konstrukcją:Parallel.For(0, 8, i =>{ Console.WriteLine("Parallel - iteracja {0} wątek {1}", i, Thread.CurrentThread.ManagedThreadId);}); Zapis ten powinien spowodować, że obl...

Parallel.For – wielowątkowość nigdy nie była tak łatwa

Programowanie rozproszone 2286 dni, 12 godzin, 40 minut temu paduda 163 rozwiń

Programowanie równoległe, wielowątkowe czy wieloprocesorowe, znane jest nie od dziś, ale to właśnie teraz, będzie najbardziej wykorzystywane. Dzisiejsze komputery nie mają już jednego rdzenia, serwery mają ich kilkanaście, a domowe pcety przynajmniej dwa. Jak wykorzystać wszystkie z nich? Zagadnienie z pewnością trudne ale i ciekawe, a dodatkowo stało się głównym tematem mojej pracy magisterskiej.

Źródło: blog.fones.pl
Dziel się z innymi:
Fones.Blog > Go Parallel, Be Master

Programowanie rozproszone 2336 dni, 15 godzin, 35 minut temu fones 103 rozwiń

W języku C# mamy kilka mechanizmów tworzenia wątków. Różnią się one zarówno wydajnością jak i przeznaczeniem. Zacznijmy więc od najpopularniejszego sposobu a mianowicie klasy System.Threading.Thread. Stworzenie wątku polega na inicjalizacji klasy oraz wywołania metody Start:publicclass ThreadExample { public CreateThread() { System.Threading.Thread thread =new System.Threading.Thread(ThreadMethod); thread.Start(null); } privatevoid ThreadMethod(object parameters) { ...

Dziel się z innymi:
Wydajność wątków w C#

Inne 2483 dni, 3 godziny, 49 minut temu Damian 224 rozwiń

1 2
Accenture
Szkolenia SecurITum
Zobacz wszystkie

.NET Developer Days 2015

W tym roku ponownie jak w poprzednim jesteśmy jednym z patronów medialnych konferencji .NET Developer Days. W tym roku jednym z prelegentów będzie Scott Hanselman.  czytaj więcej
2015-07-22

Najaktywniejsi

1

macko (32 816,53)

2

http://pawlos.blo... (31 389,4)

3

pzielinski (27 178,29)

4

gordon_shumway (21 178,87)

5

paduda (20 336,33)

6

psz750 (13 018,14)

7

rroszczyk (10 383,54)

8

Damian (9 011,08)

9

danielplawgo (7 235,99)

10

arek (6 642,77)

11

burczu (6 214,22)

12

PaSkol (5 393,84)

13

lukaszgasior (4 097,38)

14

jj09 (3 413,06)

15

http://jakub-flor... (3 224,66)

16

CaMeL (2 954,87)

17

jedmac (2 739,34)

18

mnikolajuk (2 596,93)

19

lkurzyniec (2 466,02)

20

FutureProcessing (2 460,11)