我如何发送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);
}
使用第四个参数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;
}
您将值作为 avoid*
在最后一个参数中传递给pthread_create
. 在线程函数中,您将void*
返回的类型转换为您传入的对象的类型。在本例中为字符串。