【linux c多线程】线程的创建,线程信息的获取,获取线程返回值
在Linux下使用C语言创建线程,可以使用POSIX线程库(pthreads)。以下是创建线程,获取线程信息以及获取线程返回值的示例代码:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
// 线程的返回值类型
typedef struct {
int thread_id;
void *return_value;
} thread_result;
// 线程的函数
void* thread_function(void* arg) {
int thread_id = *(int*)arg;
printf("Thread %d started\n", thread_id);
// 模拟一些工作
sleep(1);
// 返回一些数据
return (void*)(thread_id * thread_id);
}
int main() {
pthread_t thread;
int thread_id = 1;
thread_result result;
int ret;
// 创建线程
ret = pthread_create(&thread, NULL, thread_function, &thread_id);
if (ret != 0) {
printf("Thread creation failed\n");
return 1;
}
// 线程等待,获取线程返回值
pthread_join(thread, (void**)&result.return_value);
result.thread_id = thread_id;
// 打印线程返回的信息
printf("Thread %d returned %ld\n", result.thread_id, (long)result.return_value);
return 0;
}
这段代码首先包含了必要的头文件,然后定义了一个结构体thread_result
来存储线程ID和返回值。thread_function
是线程执行的函数,它接收一个整数指针作为参数,并返回一个整数指针。在main
函数中,我们创建了一个新线程,并通过pthread_join
等待线程完成。当线程完成后,我们打印出线程ID和返回值。
请注意,在实际编程中,你应该检查pthread_create
和pthread_join
的返回值,并且确保线程函数的参数和返回类型正确处理内存分配和线程安全。
评论已关闭