c++中如何创建、终止线程
时间: 2024-01-28 16:05:35 浏览: 27
线程的创建和终止在C语言中可以通过以下方式实现:
创建线程:
1. 创建一个函数,作为线程的入口点。
2. 使用pthread_create()函数创建线程,该函数需要四个参数:指向线程标识符的指针、线程属性、函数名和函数参数。
示例代码:
```
#include <pthread.h>
#include <stdio.h>
void *print_message_function( void *ptr );
int main()
{
pthread_t thread1, thread2;
char *message1 = "Thread 1";
char *message2 = "Thread 2";
int ret1, ret2;
// 创建线程1
ret1 = pthread_create(&thread1, NULL, print_message_function, (void*)message1);
if (ret1) {
printf("Error: pthread_create() failed with code %d\n", ret1);
return 1;
}
// 创建线程2
ret2 = pthread_create(&thread2, NULL, print_message_function, (void*)message2);
if (ret2) {
printf("Error: pthread_create() failed with code %d\n", ret2);
return 1;
}
// 等待线程1结束
pthread_join(thread1, NULL);
// 等待线程2结束
pthread_join(thread2, NULL);
printf("Both threads have completed\n");
return 0;
}
void *print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s\n", message);
pthread_exit(NULL);
}
```
终止线程:
线程可以通过以下方式终止:
1. 线程函数返回。
2. 线程调用pthread_exit()函数显式退出。
3. 调用pthread_cancel()函数以取消线程。
示例代码:
```
#include <pthread.h>
#include <stdio.h>
void *print_message_function( void *ptr );
int main()
{
pthread_t thread1;
char *message = "Thread 1";
int ret;
// 创建线程1
ret = pthread_create(&thread1, NULL, print_message_function, (void*)message);
if (ret) {
printf("Error: pthread_create() failed with code %d\n", ret);
return 1;
}
// 等待线程1结束
pthread_join(thread1, NULL);
printf("Thread 1 has completed\n");
return 0;
}
void *print_message_function( void *ptr )
{
char *message;
message = (char *) ptr;
printf("%s\n", message);
// 显式退出线程
pthread_exit(NULL);
}
```