hahj 2008-1-3 15:49
一段比较经典的多线程学习代码
一段比较经典的多线程学习代码。
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();
仅做学习讨论。
dzbcorg0804 2008-5-9 04:55
欢迎选择上海搬场公司
*** 作者被禁止或删除 内容自动屏蔽 ***
敏潇湛 2008-9-30 18:03
快国庆了大家怎么安排
*** 作者被禁止或删除 内容自动屏蔽 ***
v瑞龙 2008-10-17 10:36
移动联通手机服务密码破解/短信内容查询13570350029
移动联通手机服务密码破解/短信内容查询13570350029
深圳克密特商务咨询有限公司 是一家集商务咨询、私家侦探、安全顾问为一体的综合性服务机构。 资料业务: 【固定电话通话记录】 【手机短消息内容】 【手机通话记录、收发短信记录】 【户籍信息、简历、背景资料查询】【工商基本资料及税务状况查询】 【】 24小时热线:13570350029
移动联通手机通话清单查询,通话记录查询 短信内容查询手机服务密码破解江苏省 苏州市 南京市 浙江省 杭州市 温州市 山东省 济南市 安徽省 合肥市 福建省 福州市 河南省 郑州市 河北省 石家庄市 湖南省 长沙市 湖北省 武汉市 吉林省 长春市 广东省 广州市 深圳市 北京市 天津市山西省 太原市 内蒙古 呼和浩特 辽宁省 沈阳市 黑龙江 哈尔滨市 江西省 南昌市 九江市 广西省 南宁市 海南省 重庆市 贵州省 贵阳市 云南省 昆明市 西藏 拉萨市 陕西省 西安市 甘肃省 兰州市 青海省 西宁市 宁夏 银川市 新疆 乌鲁木齐市 移动联 通手机通话清单查询,通话记录查询 短信内容查询手机服务密码破解