2012-10-17 21 views
1

是否可以將多個參數傳遞給beginthreadex?向_beginThreadEx傳遞多個參數

我知道我可以創建一個類或結構,但是如果我有不相關的數據片段,我不想將它們合併到一個類或結構中呢?

Boost庫似乎允許多個參數,但我將如何爲標準C++ _beginThreadEx做多個參數?

#include <iostream> 
#include <process.h> 

unsigned __stdcall myThread(void *data) 
{ 
    //C:\dev\default threads\_threads.cpp|6|error: invalid conversion from 'int*' to 'int' [-fpermissive]| 
    int *x = static_cast<int*>(data); 

    //int *x = (int*)data; 

    std::cout << "Hello World! " << x; 
} 

int main() 
{ 

    int x = 10; 
    _beginthreadex(NULL, 0, myThread, &x, 0, NULL); 
    while(true); 
} 
+1

那麼使用'std :: pair'或'std :: tuple'呢? –

回答

6

定義一個結構或類。即使是那些似乎發送單獨值的東西最終也會在下面做同樣的事情。你的兩個值相關 - 至少它們都是你的線程函數的參數。

+0

所以換句話說,不能將多個參數傳遞給_beginThreadEx,必須使用一個參數的函數參數列表。因此,被迫使用一個結構或類。正如我所說的,這正是我希望找到的,促進線程工作方式不同(可以發送多個參數)。這意味着我將不得不重新考慮將數據傳遞給函數以實現線程化函數的方式。 – thistleknot

+0

當然,如果這是更方便的做事方式,你的結構或類可以包含指針而不是實際數據。這將是Boost如何處理多個參數,它只是隱藏你的細節。 –