-1

スレッドの数aを作成するc++プログラムを作成する必要があります。次に、スレッドごとにn(0<n<a)が、各スレッドに0からnまでの数を合計するように要求します。したがって、たとえば、a = 5の場合、5つのスレッドを作成する必要があり、3番目のスレッドは0から3まで追加する必要があります。main関数とwhileループを使用して、動的にスレッドを作成します(pthread_createを使用して、 pthreadを使用します)。次に、すべてのスレッドが実行する1つのジェネリック関数があります。私の問題は、各スレッドにそれがどの番号であるかを知らせる方法がわからないことです。したがって、3番目のスレッドはそれが最初ではなく3番目であることをどのように知るのでしょうか。

これは簡単なことだと思いますが、答えを見つけることができませんでした。

ご協力いただきありがとうございます!

etk1220

4

2 に答える 2

2

可変量のスレッドを作成することは難しくありません。例えば:

void * func(void *);

std::vector<pthread_t> threads(n);

for (std::vector<pthread_t>::iterator it = threads.begin(); it != threads.end(); ++it)
{
    int r = pthread_create(&*it, NULL, func, args);
}

エラーチェックと、エラーが発生した場合の適切なロールバックメカニズムを追加する必要があります。ライブラリを使用すると、はるかに簡単になりますが、<thread>それは使用できないとおっしゃいました。

于 2012-11-02T21:36:22.630 に答える
0

std :: threadsを使用できる場合、これは簡単です。これを拡張して作業を行うことができます。

 std::vector<std::thead> threads;
 threads.push_back(&your_function, args...);
于 2012-11-02T21:33:25.937 に答える