假设有
string ret; //全局变量
void a()
{
//调用
string s = b();
}///返回一个字符串
string b()
{
ret = "";
while(ret=="") ///等待myevent事件返回字符串,(myevent的触发在之前已定义)
{
}
return ret;
}void myevent(string s)
{
ret = s;
}问题:
1.函数b必须等待myevent事件触发才能获取字符串ret,是否有更好的办法,而不是用while死循环
2.如果在多少秒内没有myevent事件产生,则函数b返回默认值,如何设置超时
string ret; //全局变量
void a()
{
//调用
string s = b();
}///返回一个字符串
string b()
{
ret = "";
while(ret=="") ///等待myevent事件返回字符串,(myevent的触发在之前已定义)
{
}
return ret;
}void myevent(string s)
{
ret = s;
}问题:
1.函数b必须等待myevent事件触发才能获取字符串ret,是否有更好的办法,而不是用while死循环
2.如果在多少秒内没有myevent事件产生,则函数b返回默认值,如何设置超时
private Mutex mUnique = null;
void a()
{if( mUnique == null ) mUnique = new Mutex();
mUnique.WaitOne();
string s = b();}string b()
{
ret = "";
if( mUnique != null )
{
mUnique.WaitOne();
mUnique.ReleaseMutex();
}
return ret;
}void myevent(string s)
{
ret = s;
if( mUnique != null )
{
mUnique.ReleaseMutex();
}
}
据我了解,mutex只能在主线程中new和ReleaseMutex,
也只能在子线程中进行waitone,
还望指点