IのCreateThreadによって呼び出される次の関数があります。関数ポインタをlpParameterとしてCreateThreadに渡す方法は?
DWORD WINAPI start_thread(LPVOID handleFunction)
{
int prio = 4;
// call handleFunction()
handleFunction(prio);
return TRUE;
}
をそして私はここにスレッドを作成:
DECL_PREFIX tid_t so_fork(so_handler *handleFunction, unsigned priority) {
DWORD dw;
hThr[currentThread] = CreateThread(
NULL, // default security attributes
0, // use default stack size
(LPTHREAD_START_ROUTINE)start_thread, // thread function name
(LPVOID)&handleFunction, // argument to thread function
0, // use default creation flags
&dw); // returns the thread identifier
return 0;
}
私はbuilindそれをしていたとき、私は次のエラーを取得する:
Error C2064 term does not evaluate to a function taking 1 arguments libscheduler
expression preceding parentheses of apparent call must have (pointer-to-) function type libscheduler
私はそれを間違っていますか?あなたはそれを指していることをso_handler
のアドレス、handleFunction
変数自体のローカルアドレスを渡していないされているのでCreateThread()
に&handleFunction
を渡す
可能な重複[Windowsのスレッド:\ _beginthread対\ _beginthreadex対のCreateThread C++](http://stackoverflow.com/questions/331536/windows-threading-beginthread-vs-beginthreadex-vs-createthread-c) –
「私は何をしているのですか?おそらくC++でやりたくない 'CreateThread()'を使っています。 –
私はWindowsのCreateThreadを使用しています –