Linux下用C语言写一个创建线程的代码
时间: 2023-05-21 21:03:16 浏览: 93
可以使用pthread库来创建线程,以下是一个简单的示例代码:
```c
#include <stdio.h>
#include <pthread.h>
void *thread_func(void *arg)
{
printf("Hello, world!\n");
return NULL;
}
int main()
{
pthread_t thread;
int ret = pthread_create(&thread, NULL, thread_func, NULL);
if (ret != 0) {
printf("Failed to create thread!\n");
return 1;
}
pthread_join(thread, NULL);
return 0;
}
```
在这个示例中,我们定义了一个名为`thread_func`的函数作为线程的入口点,它会输出一条简单的消息。在`main`函数中,我们使用`pthread_create`函数创建一个新的线程,并将`thread_func`作为线程的入口点。`pthread_join`函数用于等待线程结束。
相关问题
linux下C语言如何创建一个线程
在Linux下,可以使用pthread库来创建线程。具体步骤如下:
1. 包含pthread头文件
```c
#include <pthread.h>
```
2. 定义线程函数
```c
void *thread_func(void *arg) {
// 线程处理的逻辑
}
```
3. 创建线程
```c
pthread_t thread_id;
pthread_create(&thread_id, NULL, thread_func, arg);
```
其中,第一个参数是线程ID,第二个参数是线程属性(可以为NULL),第三个参数是线程函数,第四个参数是传递给线程函数的参数。
4. 等待线程结束
```c
pthread_join(thread_id, &ret_val);
```
其中,第一个参数是线程ID,第二个参数是线程的返回值指针。如果不需要返回值,可以为NULL。
完整的示例代码如下:
```c
#include <stdio.h>
#include <pthread.h>
void *thread_func(void *arg) {
int *num_ptr = (int *)arg;
printf("Thread running with argument %d\n", *num_ptr);
pthread_exit(NULL);
}
int main() {
int num = 10;
pthread_t thread_id;
pthread_create(&thread_id, NULL, thread_func, &num);
pthread_join(thread_id, NULL);
return 0;
}
```
这个示例程序创建了一个线程,调用thread_func函数,并传递了一个int类型的参数。线程函数简单地打印了传递进来的参数,然后退出。主线程等待子线程结束,然后退出程序。
linux下C语言写一个简单的线程创建函数及他的cmake脚本
在Linux环境下使用C语言编写一个简单的线程创建函数,通常会使用POSIX线程库(pthreads)。这里是一个简单的示例:
```c
#include <pthread.h>
#include <stdio.h>
// 线程函数的原型
void* thread_function(void* arg);
// 主要函数,创建并启动新线程
int create_thread(const char* thread_name, void (*thread_func)(void*)) {
pthread_t thread_id; // 用于存储线程ID
int result;
if ((result = pthread_create(&thread_id, NULL, thread_func, (void*)thread_name)) != 0) {
printf("Error creating thread: %d\n", result);
return -1;
}
printf("Thread '%s' created successfully with ID %lu\n", thread_name, (unsigned long)thread_id);
return 0;
}
// 线程函数的具体实现
void* thread_function(void* thread_data) {
char* name = (char*)thread_data;
printf("Thread '%s' is running...\n", name);
// 这里可以添加线程的实际工作
return NULL;
}
int main() {
const char* thread_name = "My Thread";
create_thread(thread_name, thread_function);
return 0;
}
```
关于CMake脚本,你需要配置链接到`libpthread`库,并指定源文件。这是一个基本的CMakeLists.txt示例:
```cmake
# CMakeLists.txt
cmake_minimum_required(VERSION 3.10)
project(MyProject)
# 添加C/C++支持
add_library(MyProject src/main.c src/thread_function.c)
# 链接到POSIX线程库
target_link_libraries(MyProject pthread)
```
在这个CMake文件中,`src/main.c`和`src/thread_function.c`分别代表包含上述代码片段的源文件。当你运行`cmake .`生成构建系统,然后`make`来编译和链接程序。
阅读全文