std::string
スレッドにを送信するにはどうすればよいですか?
これは私のコードです:
void* sendReminder(void*)
{
system("echo 'hello' >> buffer.txt");
}
int main()
{
string str1 = "somevalue";
pthread_t t1;
pthread_create(&t1, NULL, &sendReminder, NULL);
}
std::string
スレッドにを送信するにはどうすればよいですか?
これは私のコードです:
void* sendReminder(void*)
{
system("echo 'hello' >> buffer.txt");
}
int main()
{
string str1 = "somevalue";
pthread_t t1;
pthread_create(&t1, NULL, &sendReminder, NULL);
}
関数に「引数」を送信するには、4 番目の引数を使用pthread_create
します。ただし、必ずヒープにコピーを作成してください。
string *userData = new string("somevalue");
pthread_create(&t1, NULL, &sendReminder, (void *) userData);
pthread_join
呼び出し元の実行を中断して新しいスレッドを待機するために使用する場合は、ローカル変数のアドレスを渡すだけで済みます。
if (pthread_create(&t1, NULL, &sendReminder, (void *) &str1) == 0)
{
pthread_join(t1, &result);
// ...
次の方法で値を取得できます。
void* sendReminder(void* data)
{
std::string* userData = reinterpret_cast<std::string*>(data);
// Think about wrapping `userData` within a smart pointer.
cout << *userData << endl;
}
void*
の最後の引数にとして値を渡しますpthread_create
。スレッド関数内で、void*
渡したオブジェクトの型にキャストします。この場合は文字列です。