工作者线程里,如何做一个无限循环,循环内容是等一个函数完成,然后等待指定时间,再从新开始运行函数,这样做行不?
int i=0;
while(i>=1)
{
fun();
sleep(100);
i++;
if(i>65535)
i=1;
}
直到主线程结束。这样做有没有问题?

解决方案 »

  1.   

    可以,但是为什么不用timer呢?
      

  2.   

    int i=0;
    while(i>=1)
    {
    fun();
    sleep(100);
    i++;
    if(i>65535)
    i=1;
    }
    =========
    i初值是0,根本就进不了循环啊
      

  3.   

    不如直接写成:
    while(1)
    {
    fun();
    sleep(100);
    }
      

  4.   

    用WaitForSingleObject , sleep都可以LZ的代码有一个线程退出问题。最好是主线程推出前通知工作线程先退出。
    HANDLE hEvent = CreateEvent( NULL, TRUE, FALSE, NULL );
    while( WaitForSingleObject(hEvent/*通知退出的事件句柄*/, 2000/*等待时间*/) == WAIT_TIMEOUT )
    {
      fun();
    }主线程退出前设置事件信号,并等待工作线程退出
    SetEvent( hEvent );
    WaitForSingleObject( hThread/*工作线程句柄*/,INFINITE );
      

  5.   

    还不如用内核对象,如事件对象,WaitForSingleObject