在C语言中,可以使用POSIX线程库(pthreads)来实现多线程并发执行任务。以下是一个简单的示例代码,展示了如何创建并运行两个线程来执行不同的任务。
```c
#include
#include
// 定义一个结构体来传递参数给线程函数
typedef struct {
int thread_id;
} ThreadArg;
// 线程函数1
void *thread_function_1(void *arg) {
ThreadArg *args = (ThreadArg *)arg;
printf("Thread 1 is running with ID: %d
", args->thread_id);
return NULL;
}
// 线程函数2
void *thread_function_2(void *arg) {
ThreadArg *args = (ThreadArg *)arg;
printf("Thread 2 is running with ID: %d
", args->thread_id);
return NULL;
}
int main() {
pthread_t thread1, thread2;
ThreadArg arg1 = {1};
ThreadArg arg2 = {2};
// 创建线程
if (pthread_create(&thread1, NULL, thread_function_1, &arg1) != 0) {
perror("Failed to create thread 1");
return 1;
}
if (pthread_create(&thread2, NULL, thread_function_2, &arg2) != 0) {
perror("Failed to create thread 2");
return 1;
}
// 等待线程结束
pthread_join(thread1, NULL);
pthread_join(thread2, NULL);
return 0;
}
```
在这个例子中,我们定义了一个`ThreadArg`结构体来传递每个线程的ID。然后创建了两个线程函数`thread_function_1`和`thread_function_2`,它们分别打印出它们的ID。在`main`函数中,我们使用`pthread_create`函数创建了两个线程,并将相应的参数传递给线程函数。最后,我们使用`pthread_join`等待这两个线程完成。
这个程序将输出:
```
Thread 1 is running with ID: 1
Thread 2 is running with ID: 2
```
注意:确保在使用pthreads之前链接了相应的库,通常是在编译时添加`-lpthread`选项。例如,如果你使用gcc编译器,命令可能是`gcc -o program program.c -lpthread`。