性能調整:將數據寫入多個管道如何在c/C++中異步運行線程的特定函數?
現在我正在做它在一個單獨的線程:
for(unsigned int i = 0; i < myvector.size();)
{
tmp_pipe = myvector[i];
fSuccess = WriteFile(tmp_pipe, &Time, sizeof(double), &dwWritten, NULL);
if(!fSuccess)
{
myvector.erase(myvector.begin()+i);
printf("Client pipe closed\r\n");
continue;
}
fSuccess = WriteFile(tmp_pipe, &BufferLen, sizeof(long), &dwWritten, NULL);
if(!fSuccess)
{
myvector.erase(myvector.begin()+i);
printf("Client pipe closed\r\n");
continue;
}
fSuccess = WriteFile(tmp_pipe, pBuffer, BufferLen, &dwWritten, NULL);
if(!fSuccess)
{
myvector.erase(myvector.begin()+i);
printf("Client pipe closed\r\n");
continue;
}
i++;
}
,結果是第一pipe
獲取數據速度最快,最後pipe
最慢的。
我正在考慮在不同的線程中這樣做,因此每個pipe
都被同樣處理。
但我怎麼能在c/C++中異步運行線程的特定函數(主線程應該立即返回)?
我上面的'for'循環運行頻率非常高,所以我不能每次都運行'CreateThread',所以一切都應該假設這個線程已經創建好了。 – COMer 2010-09-11 04:44:42
@COMer我不認爲這個解決方案是每次都調用CreateThread ...每次代碼的一部分是for循環標記爲多次你想要的。 – computinglife 2010-09-14 03:28:10