0

だから私は次のような構造体を持っています:

struct threadData{
    string filename
    int one;
    int two;
};

そして私はこれらの構造体の配列を次のように作成しました:

pthread_t threadID[5];
struct threadData *threadP;
threadP = new struct threadData[5];

次に、この構造体の配列を次のようにスレッド関数に渡します。

for(int i = 0; i < 5; i++){
    pthread_create(&threadID[i], NULL, threadFunction, (void * ) threadP[i]);
}

これが私のthreadFunctionの書き方です:

void *threadFunction(void * threadP[]){

}

さまざまなことを試しましたが、渡したものが正しくないというエラーが常に発生します。渡した各構造体オブジェクトの変数にアクセスして処理できるように、これを適切に行うにはどうすればよいですか?構造体の配列を使用しているため、どこかで構文が間違っているように感じます...どこで、何が正確に間違っているのかわかりません。どんな助けでもいただければ幸いです!

4

1 に答える 1

1
void *threadFunction(void * threadP[]){

関数はC++で配列タイプのパラメーターを持つことはできません。代わりに、パラメーターはポインターである必要があり、関数の引数として使用される配列は最初の要素へのポインターに減衰するため、宣言は次と同等です。

void *threadFunction(void ** threadP){

これは明らかに渡すのに適切なタイプではありませんpthread_create

このシグネチャを使用して関数を渡す必要があります。

void *threadFunction(void * threadP)
于 2012-10-20T02:31:24.203 に答える