// .
Using System;
Using System.Threading;
class SumArray { int sum;
object lockOn = new object(); // ,
//
lock(lockOn) { //
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 + " .");
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();
, .
#1 .
#2 15 #2 .
, , 15.
. . SumArray, Sumlt (), . MyThread, sa SumArray. , SumArray MyThread. . , sum SumArray. Sumlt () , sum, . , Sumlt () . , , Sync, , .
lock Sumlt () . , lock lockOn . , . Sleep () , , . Sumlt () , . , , Sumlt () , . .
|
|
, Sumlt (). Sumlt () , , _ . sum, , Sumlt (). , Sumlt () , , sum . Sumlt ().
#1 .
#1 2 9 #1 .
#2 29
#2 .
, Sumlt () , sum.