首页 > 编程 > .NET > 正文

.NET线程同步(3)

2024-07-10 13:05:05
字体:
来源:转载
供稿:网友


另一个同步策略是手控技术,system.threading命名空间中的一些可以用于手控同步的类。manualresetevent类用来使线程处于等待状态,它有2种状态:有信号(true)或无信号(false)。还有2个重要方法:reset()和set()。

下面代码说明reset()方法的用法:

using system;
using system.threading;

namespace manualreset
{

class reset
{

[stathread]
static void main()
{
manualresetevent manre;
manre=new manualresetevent(true); // 赋给信号量
bool state=manre.waitone(1000,true);
console.writeline("manualresetevent after first waitone "+state);

manre.reset(); //设置manualresetevent状态为无信号量
state=manre.waitone(5000,true);
console.writeline("manualresetevent after second waitone "+state);
}
}
}

运行结果:



下面代码说明set()方法的用法:

using system;
using system.threading;
namespace manualset
{

class set
{

[stathread]
static void main(string[] args)
{
manualresetevent manre;
manre=new manualresetevent(false);
console.writeline("before waitone");
bool state=manre.waitone(5000,true);
console.writeline("manualresetevent after first waitone "+state);

manre.set(); //将其状态设为有信号量
thread.sleep(3000);
state=manre.waitone(5000,true);
console.writeline("manualresetevent after second waitone "+state);
}
}
}

运行结果:



发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表