lock (o)
{
oi = oii++;
if (oi >= 100)
{
oi = 0;
oii = 1; }
}
=======================================================
这个lock是多线程方法里的一部分,目的是想循环输出0~99这个数字。。不知道这样写对不对,代码可否改成比这样高效的,更利于并发多线程的呢?
{
oi = oii++;
if (oi >= 100)
{
oi = 0;
oii = 1; }
}
=======================================================
这个lock是多线程方法里的一部分,目的是想循环输出0~99这个数字。。不知道这样写对不对,代码可否改成比这样高效的,更利于并发多线程的呢?
解决方案 »
- datatable 按总分排名次
- winform项目我打开一个窗体,xp下方任务栏就多出一个图标,不喜欢。
- 高手请进
- 如何读取oracle里面bfile的图片
- 急!如何在Winform里通过ODBC连接Oracle?
- datagrid 的cell中怎么样加入droplist?
- 急!急!求助:.net中如何实现给日文汉字注假名?高分.
- 50分问 VS.net 2005里面连接不上SQL server 2000 的简单问题
- 一简单的文本文件读取问题
- 研究checkedlistbox的name
- 这个该怎么写呢?实在写不出来了,头好痛!!
- 在自定义控件里面套了一个自定义控件,用Repeater,但是无法显示,高手帮忙看一下
{ static object a = new object();
static object b = new object();
static int i = 100;
static int j = 0;
public static void Main()
{
//Stopwatch sw = new Stopwatch();
List <Thread> ThreadList = new List <Thread>(10);
Thread tmp;
for (int i = 1; i <= ThreadList.Capacity; i++)
{
tmp = new Thread(new ThreadStart(Process));
tmp.Name = "线程" + i;
ThreadList.Add(tmp);
}
foreach (Thread SingleThread in ThreadList)
SingleThread.Start();
Console.ReadKey(); }
static private void Process()
{
while (i > 0)
{
lock (a)
{
if (i > 0)
{
i--;
Console.WriteLine(Thread.CurrentThread.Name + "减1 ====> i = " + i);
}
}
}
} static private void Process2()
{
while (j < 10)
{
lock (a)
{
if (j <10 )
{
j++;
Console.WriteLine(Thread.CurrentThread.Name + "加1 ====> j = " + j);
}
}
}
}
} 执行结果
由于资源的抢占和线程的CPU调度,每次运行的结果会不一样~下面给一个运行结果:
线程2减1 ====> i = 99
线程4减1 ====> i = 98
线程4减1 ====> i = 97
线程4减1 ====> i = 96
线程4减1 ====> i = 95
线程4减1 ====> i = 94
线程4减1 ====> i = 93
线程4减1 ====> i = 92
线程4减1 ====> i = 91
线程4减1 ====> i = 90
线程4减1 ====> i = 89
线程4减1 ====> i = 88
线程4减1 ====> i = 87
线程4减1 ====> i = 86
线程4减1 ====> i = 85
线程4减1 ====> i = 84
线程4减1 ====> i = 83
线程4减1 ====> i = 82
线程4减1 ====> i = 81
线程4减1 ====> i = 80
线程4减1 ====> i = 79
线程4减1 ====> i = 78
线程4减1 ====> i = 77
线程4减1 ====> i = 76
线程4减1 ====> i = 75
线程4减1 ====> i = 74
线程4减1 ====> i = 73
线程4减1 ====> i = 72
线程4减1 ====> i = 71
线程4减1 ====> i = 70
线程2减1 ====> i = 69
线程2减1 ====> i = 68
线程2减1 ====> i = 67
线程2减1 ====> i = 66
线程2减1 ====> i = 65
线程2减1 ====> i = 64
线程2减1 ====> i = 63
线程2减1 ====> i = 62
线程2减1 ====> i = 61
线程2减1 ====> i = 60
线程2减1 ====> i = 59
线程2减1 ====> i = 58
线程2减1 ====> i = 57
线程2减1 ====> i = 56
线程2减1 ====> i = 55
线程5减1 ====> i = 54
线程5减1 ====> i = 53
线程5减1 ====> i = 52
线程4减1 ====> i = 51
线程3减1 ====> i = 50
线程3减1 ====> i = 49
线程6减1 ====> i = 48
线程6减1 ====> i = 47
线程6减1 ====> i = 46
线程6减1 ====> i = 45
线程6减1 ====> i = 44
线程4减1 ====> i = 43
线程4减1 ====> i = 42
线程4减1 ====> i = 41
线程4减1 ====> i = 40
线程4减1 ====> i = 39
线程4减1 ====> i = 38
线程4减1 ====> i = 37
线程4减1 ====> i = 36
线程4减1 ====> i = 35
线程4减1 ====> i = 34
线程4减1 ====> i = 33
线程4减1 ====> i = 32
线程4减1 ====> i = 31
线程4减1 ====> i = 30
线程4减1 ====> i = 29
线程4减1 ====> i = 28
线程4减1 ====> i = 27
线程4减1 ====> i = 26
线程4减1 ====> i = 25
线程2减1 ====> i = 24
线程6减1 ====> i = 23
线程8减1 ====> i = 22
线程8减1 ====> i = 21
线程8减1 ====> i = 20
线程8减1 ====> i = 19
线程8减1 ====> i = 18
线程8减1 ====> i = 17
线程8减1 ====> i = 16
线程8减1 ====> i = 15
线程8减1 ====> i = 14
线程8减1 ====> i = 13
线程8减1 ====> i = 12
线程8减1 ====> i = 11
线程8减1 ====> i = 10
线程8减1 ====> i = 9
线程8减1 ====> i = 8
线程8减1 ====> i = 7
线程8减1 ====> i = 6
线程8减1 ====> i = 5
线程8减1 ====> i = 4
线程10减1 ====> i = 3
线程4减1 ====> i = 2
线程5减1 ====> i = 1
线程7减1 ====> i = 0