国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET:一段比較經典的多線程學習代碼

2024-07-10 13:13:42
字體:
來源:轉載
供稿:網友

一段比較經典的多線程學習代碼。

  1、用到了多線程的同步問題。
  2、用到了多線程的順序問題。

  如果有興趣的請仔細閱讀下面的代碼。注意其中代碼段的順序,思考一下,這些代碼的順序能否互相調換,為什么?這應該對學習很有幫助的。為了演示,讓所有的線程都Sleep了一段時間。

using System.Net;
using System;
using System.IO;
using System.Text;
using System.Threading;
using System.Diagnostics;

namespace Webb.Study
{
class TestThread
{
static Mutex m_Mutex = new Mutex();
static Thread[] m_testThreads = new Thread[10];
static int m_threadIndex = 0;

static void ThreadCallBack()
{
TestThread.m_Mutex.WaitOne();
int m_index = m_threadIndex;
TestThread.m_Mutex.ReleaseMutex();
Console.WriteLine("Thread {0} start.",m_index);
for(int i=0;i<=10;i++)

TestThread.m_Mutex.WaitOne(); 
Console.WriteLine("Thread {0}: is running. {1}",m_index,i);
TestThread.m_Mutex.ReleaseMutex();
Thread.Sleep(100);
}
Console.WriteLine("Thread {0} end.",m_index);
}

public static void Main(String[] args)
{
Console.WriteLine("Main thread start.");
for(int i=0;i<TestThread.m_testThreads.Length;i++)
{
TestThread.m_threadIndex = i;
TestThread.m_testThreads[i] = new Thread(new ThreadStart(ThreadCallBack)); 
TestThread.m_testThreads[i].Start();
Thread.Sleep(100);
}
for(int i=0;i<TestThread.m_testThreads.Length;i++)
{
TestThread.m_testThreads[i].Join();
}
Console.WriteLine("Main thread exit.");
}
}
}

  1、主函數中這兩句能否互換?為什么?

TestThread.m_testThreads[i].Start();
Thread.Sleep(100);

  2、CallBack函數中這兩句能否互換?為什么?會有什么不同的結果?

TestThread.m_Mutex.ReleaseMutex();
Thread.Sleep(100);

  3、主函數能否寫成這樣?為什么?會有什么不同的結果?

public static void Main(String[] args)
{
Console.WriteLine("Main thread start.");
for(int i=0;i<TestThread.m_testThreads.Length;i++)
{
TestThread.m_threadIndex = i;
TestThread.m_testThreads[i] = new Thread(new ThreadStart(ThreadCallBack)); 
TestThread.m_testThreads[i].Start();
TestThread.m_testThreads[i].Join();
Thread.Sleep(100);
}
Console.WriteLine("Main thread exit.");
}

  4、這幾句的作用是什么?那么程序中還存在什么樣的問題?應該做怎樣的修改?

TestThread.m_Mutex.WaitOne();
int m_index = m_threadIndex;
TestThread.m_Mutex.ReleaseMutex();

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 许昌市| 枣庄市| 屯留县| 苏州市| 塔河县| 二连浩特市| 宝鸡市| 长沙市| 西平县| 合作市| 射阳县| 郁南县| 永新县| 宁德市| 沁阳市| 新密市| 大石桥市| 长沙市| 酒泉市| 荆门市| 富阳市| 凤翔县| 芮城县| 柳江县| 色达县| 富锦市| 滕州市| 龙南县| 洱源县| 同德县| 合江县| 河源市| 苍梧县| 抚顺县| 汶上县| 南华县| 朔州市| 卓资县| 大田县| 茶陵县| 东源县|