.


:




:

































 

 

 

 


.




, .

, , , .

, .

, , . , , - . , . lock . ? , : , lock. . , Sumlt () , lockOn . Sumlt () MyThread.

// , using System;

Using System.Threading;

class SumArray { int sum;

public int Sumlt(int[] nums) {

sum =0; //

for(int i=0; i < nums.Length; i++) { sum += nums[i];

Console.WriteLine(" " +

Thread.CurrentThread.Name + " " + sum); Thread.Sleep(10); //

}

Return sum;

}

}

class MyThread {

public Thread Thrd; int[] a; int answer;

/* SumArray MyThread. */ static SumArray sa = new SumArray();

// , public MyThread(string name, int[] nums) { a = nums;

Thrd = new Thread(this.Run);

Thrd.Name = name;

Thrd.Start(); //

}

// , void Run() {

Console.WriteLine(Thrd.Name + " .");

// Sumlt(). lock(sa) answer = sa.Sumlt(a);

Console.WriteLine(" " + Thrd.Name +

" " + answer);

Console.WriteLine(Thrd.Name + " .");

}

}

class Sync {

static void Main() {

int[] a = {1, 2, 3, 4, 5};

MyThread mtl = new MyThread(" #1", a);

MyThread mt2 = new MyThread(" #2", a);

Mtl.Thrd.Join(); mt2.Thrd.Join();

sa. Sum It (), Sum It (). , .

// Sumlt(). lock(sa) answer = sa.Sumlt(a);

sa , . , .

Monitor

lock C# , Monitor, System. Threading. , , . , Enter (), Exit (). :

public static void Enter(object obj) public static void Exit (object obj)

obj . , Enter () , . Enter () Exit () , lock . lock " " #.





:


: 2016-12-03; !; : 330 |


:

:

, ; , .
==> ...

1568 - | 1360 -


© 2015-2024 lektsii.org - -

: 0.008 .