#include <unistd.h> #include <stdio.h> #include <pthread.h> void* son(void *num) { int *a = (int *) num; (*a)++; printf("I am son, count=%d\n", *a); pthread_exit(NULL); } void* daughter(void *num) { int *a = (int *) num; (*a)++; printf("I am daughter, count=%d\n", *a); pthread_exit(NULL); } int main() { pthread_t son_tid, daughter_tid; int count = 1; pthread_create(&son_tid, NULL, son, &count); pthread_create(&daughter_tid, NULL, daughter, &count); pthread_join(son_tid, NULL); pthread_join(daughter_tid, NULL); printf("I am parent, count=%d\n", count); return 0; }解释代码
时间: 2024-04-27 19:22:29 浏览: 56
C_函数(标注版).pdf相关函数 signal,sleep 表头文件 #include<unistd.h> 定义函数 unsigned int alarm(unsigned int seconds);
5星 · 资源好评率100%
这段代码是一个使用pthread库实现多线程的例子。主要实现了一个父进程创建了两个子线程son和daughter,每个子线程对count变量进行加1,然后输出当前count的值。最后父进程输出最终的count值。
在主函数中,首先定义了两个线程son_tid和daughter_tid,并定义了一个变量count并初始化为1。然后使用pthread_create函数创建了两个子线程son和daughter,并将count变量的地址作为参数传递给两个子线程。在子线程函数中,首先将传递进来的num指针转换为int指针,然后将指针所指向的值加1,并输出当前count的值。最后,使用pthread_exit函数退出子线程。
在主函数中,使用pthread_join函数等待两个子线程结束,并输出最终的count值。在本例中,因为count变量被两个子线程同时加1,所以最终的count值应该是3。
阅读全文