Ros带参数的多线程C++程序
时间: 2023-12-29 09:46:04 浏览: 87
以下是一个示例程序:
```
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *thread_function(void *arg);
int main(int argc, char *argv[])
{
pthread_t thread1, thread2;
char *message1 = "Thread 1";
char *message2 = "Thread 2";
int ret1, ret2;
// 创建线程1
ret1 = pthread_create(&thread1, NULL, thread_function, (void *)message1);
if (ret1 != 0) {
printf("Error: pthread_create() failed\n");
exit(EXIT_FAILURE);
}
// 创建线程2
ret2 = pthread_create(&thread2, NULL, thread_function, (void *)message2);
if (ret2 != 0) {
printf("Error: pthread_create() failed\n");
exit(EXIT_FAILURE);
}
// 等待线程1结束
ret1 = pthread_join(thread1, NULL);
if (ret1 != 0) {
printf("Error: pthread_join() failed\n");
exit(EXIT_FAILURE);
}
// 等待线程2结束
ret2 = pthread_join(thread2, NULL);
if (ret2 != 0) {
printf("Error: pthread_join() failed\n");
exit(EXIT_FAILURE);
}
printf("Program exiting.\n");
exit(EXIT_SUCCESS);
}
void *thread_function(void *arg)
{
char *message = (char *)arg;
printf("%s\n", message);
pthread_exit(NULL);
}
```
在这个程序中,我们使用了两个参数为字符串的线程函数thread_function。在main函数中,我们创建了两个线程,每个线程都传递了一个不同的字符串作为参数。
使用pthread_create函数创建线程时,我们将线程函数的名称作为第三个参数传递,并将字符串参数作为第四个参数传递。在线程函数中,我们将参数转换为字符串,并在标准输出中打印出来。最后,我们使用pthread_exit函数退出线程。
在main函数中,我们使用pthread_join函数等待线程结束。这样可以确保线程在程序退出前都已经结束。
注意,在使用多线程时,需要特别注意线程间的数据同步和竞争条件问题。如果不正确地处理这些问题,程序可能会出现难以预料的行为。
阅读全文