Wpis z mikrobloga

Mam wielowątkowy program w którym chciałbym ograniczyć wykonanie jednej z funkcji tylko do jednego wątku w jaki sposób mógłbym to osiągnąć?

np.
mam 6 wątków, 5 realizuje program w którym jest warunek na wykonanie funkcji Test();
a szósty wątęk jeśli warunek jest spełniony wykonuje tylko tą funkcję Test();

#programowanie #naukaprogramowania #dotnet
  • 7
o ile dobrze rozumem to niestety nie ma odpowiednika javovego synchronized w .net


@MagicznyMarian: Jest odpowiednik:

[System.Runtime.CompilerServices.MethodImpl(MethodImpl.Synchronized)]
https://stackoverflow.com/questions/2552192/limiting-the-number-of-threads-executing-a-method-at-a-single-time

czyli semaphore w którym ograniczę liczbę wątków do 1 zadziała tak samo jak lock?


@Euwd: Nie znam się, ale wydaje mi się, że na pewno będzie różnica wydajności na korzyść, pewnie na korzyść semaphore. Chociaż tutaj lepiej, żeby wypowiedział się ktoś mądrzejszy.
Lock wpuszcza tylko jeden wątek do części kodu, który jest
@vasper: fakt, ja zwróciłem uwagę na tą wypowiedź

Does c# have its own version of the java "synchronized" keyword?


No. In C#, you explicitly lock resources that you want to work on synchronously across asynchronous threads. lock opens a block; it doesn't work on method level.

My bad.