Chào mọi người, em có một hàm tính tổng như sau : tính trung bình cộng của một phần tử với trung bình cộng là trung bình cộng của các phần tử nằm chung quanh nó trong một ma trận và dùng n thread để tính trung bình đó.
còn đây là code của em. Mọi người giúp em với. Em có đọc qua các bài về multithread như chưa hiểu cách để thể hiện được là chạy đúng như multithread
public void TinhTong()
{
int n = MT.GetLength(0);
int m = MT.GetLength(1);
TBCong = new double[n, m];
for (int i = 0; i < MT.GetLength(0); i++)
{
//Thread.Sleep(1000);
for (int j = 0; j < MT.GetLength(1); j++)
{
Thread.Sleep(1000);
if (i == 0 && j == 0)
TBCong[i, j] = (MT[i, j + 1] + MT[i + 1, j] + MT[i + 1, j + 1]) / 3;
else if (i == 0 && j == m - 1)
TBCong[i, j] = (MT[i, j - 1] + MT[i + 1, j] + MT[i + 1, j - 1]) / 3;
else if (i == n - 1 && j == 0)
TBCong[i, j] = (MT[i - 1, j] + MT[i - 1, j + 1] + MT[i, j + 1]) / 3;
else if (i == n - 1 && j == m - 1)
TBCong[i, j] = (MT[i - 1, j] + MT[i - 1, j - 1] + MT[i, i - 1]) / 3;
else if (i == 0 && j > 0 && j < m - 1)
TBCong[i, j] = (MT[i, j - 1] + MT[i + 1, j + 1] + MT[i + 1, j] + MT[i + 1, j + 1] + MT[i, j + 1]) / 5;
else if (i == n - 1 && j > 0 && j < m - 1)
TBCong[i, j] = (MT[i - 1, j - 1] + MT[i, j + 1] + MT[i - 1, j] + MT[i - 1, j + 1] + MT[i, j + 1]) / 5;
else if (j == 0 && i > 0 && i < m - 1)
TBCong[i, j] = (MT[i - 1, j] + MT[i - 1, j + 1] + MT[i, j + 1] + MT[i + 1, j + 1] + MT[i + 1, j]) / 5;
else if (j == m - 1 && i > 0 && i < m - 1)
TBCong[i, j] = (MT[i - 1, j - 1] + MT[i - 1, j] + MT[i, j - 1] + MT[i + 1, j - 1] + MT[i + 1, j]) / 5;
else if (i != 0 && j != 0 && i != n - 1 && j != m - 1)
TBCong[i, j] = (MT[i - 1, j - 1] + MT[i - 1, j] + MT[i - 1, j + 1] + MT[i, j - 1] + MT[i, j + 1] + MT[i + 1, j - 1] + MT[i + 1, j] + MT[i + 1, j + 1]) / 8;
}
}
}
Đây là chạy ở hàm main()
Thread[] thr = new Thread[5];
for(int i = 0; i<5; i++)
{
thr[i] = new Thread(new ThreadStart(Mythr.TinhTong));
//Thread.Sleep(1000);
Console.WriteLine("thr{0} hoan thanh", i+1);
}
foreach(Thread x in thr)
{
x.Start();
}
Em tạo ra 5 thread để thực hiện công việc tính trung bình đó.