1. 程式人生 > >如何寫 執行耗時任務的、可隨時立即退出的函式 呢?

如何寫 執行耗時任務的、可隨時立即退出的函式 呢?

如題。

稍微解釋下,因為有可能有人會誤會:放新執行緒裡面去不就可以了?這沒有解決問題。如此的話,你那個執行緒函式怎麼寫?或者執行緒函式裡呼叫的某個任務函式怎麼寫?總之,多執行緒雖然總是出現在這些問題的解決方案中,但不是多執行緒解決了這個問題。嗯……不知道說清楚了沒?

目前我心裡的答案只有這一種模式:

bool DoTask(HANDLE hQuitSignal)
{
    while (!QuitCondition)
    {
        if (WaitForSingleObject(hQuitSignal, 0) == WAIT_OBJECT_0)
        {
            return false;
        }

        // Do something
    }

    return true;
}

其中,“// Do something”部分要細化到瞬間執行完成的細度。

但是我很困惑的是,如果這些任務很繁重,難道我必須每進行一些操作就 if (WaitForSingleObject(hQuitSignal, 0) == WAIT_OBJECT_0) 檢查下嗎?這樣豈不是這種檢測程式碼充斥在任務中了?

不知各位有何經驗和體會,求教~

posted on 2011-05-26 00:36 溪流 閱讀(2032) 評論(29)  編輯 收藏 引用 所屬分類: C++Windows