父进程有多个线程,fork()只会复制一个线程
fork()前的父进程有多个线程,子进程只复制fork所在线程为主进程,其他线程不复制
#include <pthread.h> #include <sys/prctl.h> pthread_mutex_t my_lock = PTHREAD_MUTEX_INITIALIZER; static void *my_thread1(void *args) { prctl(PR_SET_NAME, "thread_1"); sleep(3*60); return NULL; } static void *my_thread2(void *args) { prctl(PR_SET_NAME, "thread_2"); sleep(3*60); return NULL; } int main(int argc, char * argv[]) { int count = 0; int ret = 0; int rc= 0; pthread_t thread_fd_1; pthread_t thread_fd_2; prctl(PR_SET_NAME, "thread_main"); rc |= pthread_create(&thread_fd_1, NULL, my_thread1, NULL); rc |= pthread_create(&thread_fd_2, NULL, my_thread2, NULL); pthread_mutex_lock(&my_lock); count = 0; ret = fork(); if (0 == ret) { printf("child will lock\r\n"); pthread_mutex_lock(&my_lock); printf("child lock OK\r\n"); count = 1; printf("child will unlock\r\n"); pthread_mutex_unlock(&my_lock); printf("child unlock OK\r\n"); sleep(3*60); } else { printf("father will sleep(3*60)\r\n"); sleep(3*60); } return 0; }
#include <pthread.h> #include <sys/prctl.h> pthread_mutex_t my_lock = PTHREAD_MUTEX_INITIALIZER; static int count = 0; static void *my_thread1(void *args) { prctl(PR_SET_NAME, "thread_1"); sleep(3*60); return NULL; } static void *my_thread2(void *args) { int ret = 0; prctl(PR_SET_NAME, "thread_2"); ret = fork(); if (0 == ret) { printf("child will lock\r\n"); pthread_mutex_lock(&my_lock); printf("child lock OK\r\n"); count = 1; printf("child will unlock\r\n"); pthread_mutex_unlock(&my_lock); printf("child unlock OK\r\n"); sleep(3*60); } else { printf("father will sleep(3*60)\r\n"); sleep(3*60); } return NULL; } int main(int argc, char * argv[]) { int ret = 0; int rc= 0; pthread_t thread_fd_1; pthread_t thread_fd_2; prctl(PR_SET_NAME, "thread_main"); rc |= pthread_create(&thread_fd_1, NULL, my_thread1, NULL); rc |= pthread_create(&thread_fd_2, NULL, my_thread2, NULL); pthread_mutex_lock(&my_lock); count = 0; sleep(3*60); return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)