如果我們創建一個短生命線程(200毫秒到1秒)以在文本框字段中的每個按鍵上執行搜索任務是否存在缺陷?是否有創建大量短壽命線程的缺點?
std::wstring query;
void DoTheSearch()
{
// 200ms to 1sec long processing that would block the GUI if no dedicated thread
// search a database using query variable
}
// main window message loop
case WM_COMMAND:
// ...
if (wmEvent == EN_CHANGE)
{
query = GetTheQueryStringFromTextBox(...);
DWORD threadID;
HANDLE hThread = CreateThread(NULL, 0, DoTheSearch, NULL, 0, &threadID);
// there will be a lot (for each keypress) of short-life threads often
}
或者我應該只一個線程用於搜索(用while (True)
閒置的大部分時間,並與Sleep(10);
裏面?)。
注:我也實行了「反跳」功能,以避免儘可能多的搜索比每個按鍵,但這是不可能的話題在這裏。
你想要做什麼是查找[條件](http://en.cppreference.com/w/cpp/thread/condition_variable)這將讓你有一個單線程沒有'睡眠' – UKMonkey
我不認爲問題很糟糕,但它實際上包含兩個。 –
@HannesHauptmann它也一直在變化 – UKMonkey