for(int i=0;i<100;i++)
{
Thread tmp = new Thread(new ThreadStart(MyFunction));
tmp.IsBackground = true;
tmp.Name = i.ToString();
tmp.Start();
}
AllStart = true;
void MyFunction()
{
while(true)
{
if(AllStart)
{
//code
//你本来要做的计算啊, 什么的
if(some_condition)
break;//结束你的Thread..
}else{
Thread.Sleep(1);//等待所有的Thread都开始....
}
}
}
{
Thread tmp = new Thread(new ThreadStart(MyFunction));
tmp.IsBackground = true;
tmp.Name = i.ToString();
tmp.Start();
}
AllStart = true;
void MyFunction()
{
while(true)
{
if(AllStart)
{
//code
//你本来要做的计算啊, 什么的
if(some_condition)
break;//结束你的Thread..
}else{
Thread.Sleep(1);//等待所有的Thread都开始....
}
}
}
解决方案 »
- WPF,空白、换行是怎么处理的哦
- 怎么使用SDK开发包,二次开发的问题。
- C++转到C#
- 急求!怎样递归填充树啊?
- 在C#中如何把一个“带单引号的sql长语句” 赋值给 sql server存储过程的参数
- pictureBox中图片保存到数据库问题。
- 急 ,如何取一个变量的长度?
- 在线求 C# 写的把数据转大写的程序!
- 用StreamReader的方法ReadLine()不能把汉字正确读出来,怎么转换?
- 怎么设置DataGrid中指定行的背景颜色?
- TcpListener的AcceptSocket() 问题,请大家高手帮帮忙,谢谢呵呵。
- 请问跨页面传递参数后如何在新页面的label.text中显示数据库内容
如果必须是顺序的,就只有for了,没有办法
如果是非顺序的,单独的,可以考虑开一百个线程,每个线程都执行啊
{
static int x =0; //用来记录函数执行次数
static object locker = new object();//锁对象
static void Main()
{
example ex = new example();
new Thread(new ThreadStart(ex.Cfun)).Start(); //创建一个新进程执行函数
ex.Cfun(); //主线程执行函数
} //用来控制函数执行次数
private void Cfun()
{
while(example.x<100)//函数执行少于100次才让执行
{
lock(locker){example.x++;} //设置一个锁,同步2个线程
if(example.x<=100) //在判断一次。以免进入while以后,x被另外一个线程加1了
fun();
}
} //要执行的函数
public void fun()
{
Console.WriteLine("hello");
}
}
结果应该是输出100个hello,也就是fun被执行了100次
设2个线程差不多,没必要设置的太多,双核CPU一次也就处理2个。多了的话,线程的切换也要消耗资源。