Wpis z mikrobloga

Na 2 komputerach mam uruchomiony taki sam program napisany w c#. Chciałbym, aby część tego programu była wykonywana na raz tylko przez 1 komputer. Jest jakaś biblioteka, która umożliwi mi sychronizację tego?

Widziałbym to tak, że te komputery odpytują się jakiegś serwisu, który odpowiada z informacją, czy można, czy nie można wykonywać tej konkretnej części kodu (można, jeśli drugi komputer akurat jej nie wykonuje).

#programowanie #programista15k #naukaprogramowania #programujzwykopem #csharp
  • 7
@becvvv: O, przetwarzanie rozproszone i distributed lock. Zależy jak "mocne" masz wymagania co do tego, że "tylko jeden komputer może wykonywać akcję", czy komputery mogą rozmawiać bezpośrednio, czy w przyszłości komputerów będzie więcej niż 2 (bo przy 2 to jeszcze coś da się zrobić, przy 3 zaczynają się schody).
@becvvv: Dopisz "moduł serwerowy" i zakoduj to tak:

Serwer na dany port, statyczne ip.

Komp włącza się do sieci, dochodzi do "wykonaj część kodu która ma być wykonywana tylko raz"
Leci request do serwera.
a) serwer odpowiada że albo można wykonać albo nie można
1. Można -> leci do serwera info żeby sobie zakodował że już nie można. Wykonuje akcje. Leci info do serwera że można.
2. Nie można -> nie
@becvvv: Albo jeszcze inaczej. Robisz flagę w app.config, która steruje częścią programu, która ma chodzić warunkowo i wtedy w momecnie deploymentu, jeden serwis ma true, drugi false.
Ale to jest przecież robienie sobie pod górkę. Pierwsze zdanie sugeruje, że nie są to te same programy.


@czupek: Powiedz mi która część tego zdania sugeruje, że to nie są takie same programy:
"Na 2 komputerach mam uruchomiony taki sam program napisany w c#"

Poza tym - jakie pod górkę? Chyba nie rozumiesz problemu..

Powiedzmy, że mam taki program:
static void Main(string[] args)
{
var data = getData();
var settings =