對於我的任務,我需要編寫一個多線程程序,在一個單獨的線程中輸出小於或等於用戶輸入的數字的所有素數。如何在window.h線程中聲明一個bool函數?
我是新來的線程,並沒有完全理解如何正確地實現它們。但是我創建了一個布爾函數來確定一個整數是否是一個素數,我將它命名爲bool isPrime。然而,布爾isPrime給我以下錯誤「聲明是不符合」LPVOID isPrime「。我不知道如何解決它,我也注意到,我的編譯器(visual c + +)給出了」cout「的紅色下劃線和「cin」,但如果我聲明使用命名空間標準,比編譯器強調「標準」,並給出這個錯誤「名稱必須是命名空間名稱」,我不知道它應該是什麼意思。我該如何解決這兩個問題?
#include <Windows.h>
DWORD Prime;
DWORD WINAPI primeThreadFun(LPVOID isPrime)
{
bool isPrime(int n)
{
float sqrtn = sqrt(n);
if (n < 2) return false;
if (n < 4) return true;
if (n % 2 == 0) return false;
for (int d = 3; d <= sqrtn; d += 2)
if (n % d == 0) return false;
return true;
}
}
int main(int argc, char *argv [])
{
DWORD ThreadId;
HANDLE ThreadHandle;
int n;
cout << "Enter a number: " << endl;
cin >> n;
for (int i = 0; i <= n; i++)
if (isPrime(i)) cout << i << " ";
cout endl;
}
ThreadHandle = CreateThread(NULL, 0, primeThreadFun, (LPVOID) isPrime, NULL, ThreadID []);
if (ThreadHandle != NULL)
{
WaitForSingleObject(ThreadHandle INFINITE);
CloseHandle(ThreadHandle);
}
}
如何將它移出並從primeThreadFun中調用它?所以,我應該包括使用命名空間標準,不是嗎? –
如果我#include它告訴我「無法打開源文件iostream.h」 –
「iostream」沒有.h。 – joeking