想对一个函数进行超时设置,譬如这个函数是bool getnumber(),如果2秒没有返回时,自动返回false.

解决方案 »

  1.   

    最好用系统时钟频率做,Sleep不准。
    代码:
    LARGE_INTEGER litmp; QueryPerformanceCounter(&litmp);
    dSpos = litmp.QuadPart;// 获得定时器的初始值



    QueryPerformanceCounter(&litmp);
    dSpos1 = litmp.QuadPart;//获得定时器中止值
    dfMinus = (double)(dSpos1-dSpos);
    dfTim = dfMinus/dfFreq*1000;// 获得初始值与中止值的差对应的时间值,单位为毫秒通过循环检测时间差,再进行返回即可完成功能。
      

  2.   

    独自一个线程执行该函数的话,可以用WaitForSingleObject进行设置,然后再判断该函数的返回值即可
      

  3.   

    CreateThread,开始线程,最后TerminateThread
      

  4.   

    做法:
    1.做一线程运行此函数
    2.函数运行完毕关闭线程
    3.做一定时器或者一sleep 2秒的线程,查询刚才线程运行状态
    4.如果还在运行 colse掉给分