当前位置: 首页 > wzjs >正文

html in wordpress西安抖音seo

html in wordpress,西安抖音seo,商丘做微信网站sqwyy,专做零食的网站如果一个多线程程序的某个线程调用了fork函数,那么新创建的子进程是否将自动创建和父进程相同数量的线程呢? 子进程仅保留调用fork的那个线程,其他线程在子进程中会被终止 原因:多线程环境下直接复制所有线程会引发严重的一致性问题&#x…

如果一个多线程程序的某个线程调用了fork函数,那么新创建的子进程是否将自动创建和父进程相同数量的线程呢?

子进程仅保留调用fork的那个线程,其他线程在子进程中会被终止
原因:多线程环境下直接复制所有线程会引发严重的一致性问题,例如:
锁状态不一致:若父进程中某线程持有锁,子进程复制该线程会导致锁被永久占用,引发死锁。
资源竞争:多线程共享的全局变量、文件描述符等状态难以在子进程中正确还原。
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <unistd.h>static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;static void* thread_fun(void*arg)
{sleep(1);pid_t pid;pthread_mutex_lock(&mutex);pid = fork();if(pid==0){pthread_mutex_unlock(&mutex);printf(" child \r\n");}if(pid>0){pthread_mutex_unlock(&mutex);printf(" parrent  \r\n");}printf(" thread_fun \r\n");
}int main()
{pthread_t tid;printf("hell test \r\n");if(pthread_create(&tid,NULL,thread_fun,NULL)){printf("create new thread failed\r\n");return -1;}pthread_mutex_lock(&mutex);sleep(2);pthread_mutex_unlock(&mutex);printf("main \r\n");if(pthread_join(tid,NULL))  // 等待子进程退出{printf("join thread failed \r\n");return -1;}return 0;
}
gcc thread_lock_fock.c  -o thread_atfork -lpthread

打印只有一个hell_test  说明 子进程仅保留调用fork的那个线程,其他线程在子进程中会被终止

互斥条件:锁同一时间只能被一个线程持有,pthread_mutex_lock 多次调用未解锁,将导致死锁

#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <unistd.h>static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;static void* thread_fun(void*arg)
{sleep(1);pid_t pid;pid = fork();if(pid==0){pthread_mutex_lock(&mutex);printf(" child \r\n");pthread_mutex_unlock(&mutex);}if(pid>0){pthread_mutex_lock(&mutex);printf(" parent is%d\r\n",pid);pthread_mutex_unlock(&mutex);}printf(" thread_fun \r\n");
}int main()
{pthread_t tid;printf("hell test \r\n");if(pthread_create(&tid,NULL,thread_fun,NULL)){printf("create new thread failed\r\n");return -1;}pthread_mutex_lock(&mutex);sleep(2);pthread_mutex_unlock(&mutex);printf("main \r\n");if(pthread_join(tid,NULL))  // 等待子进程退出{printf("join thread failed \r\n");return -1;}return 0;
}
gcc thread_fork_lock.c  -o thread_atfork -lpthread
root@camera-virtual-machine:/mnt/hgfs/E/pthread# ./thread_atfork

// 子进程没法解锁 死锁

解决使用pthread_atfork函数

#include <pthread.h>int pthread_atfork(void (*prepare)(void),void (*parent)(void),void (*child)(void));
#include <stdio.h>
#include <pthread.h>
#include <unistd.h>
#include <sys/types.h>
#include <unistd.h>static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;// 在fork前释放锁
static void prepare(void)
{printf("Prepare: Uocking mutex before fork\n");pthread_mutex_lock(&mutex);
}// fork后父进程重新加锁
static void parent(void)
{printf("Parent: Relocking mutex after fork\n");pthread_mutex_unlock(&mutex);
}// fork后子进程重置锁状态
static void child(void)
{printf("Child: Resetting mutex after fork\n");// 子进程可能需要重新初始化锁pthread_mutex_unlock(&mutex);
}static void* thread_fun(void*arg)
{sleep(1);pid_t pid;// 注册fork处理函数pthread_atfork(prepare, parent, child);pid = fork();if(pid==0){pthread_mutex_lock(&mutex);printf(" child \r\n");pthread_mutex_unlock(&mutex);}if(pid>0){pthread_mutex_lock(&mutex);printf(" parent is%d\r\n",pid);pthread_mutex_unlock(&mutex);}printf(" thread_fun \r\n");
}int main()
{pthread_t tid;printf("hell test \r\n");if(pthread_create(&tid,NULL,thread_fun,NULL)){printf("create new thread failed\r\n");return -1;}pthread_mutex_lock(&mutex);sleep(2);pthread_mutex_unlock(&mutex);printf("main \r\n");if(pthread_join(tid,NULL))  // 等待子进程退出{printf("join thread failed \r\n");return -1;}return 0;
}
root@camera-virtual-machine:/mnt/hgfs/E/pthread# gcc thread_atfork.c   -o thread_atfork -lpthread
root@camera-virtual-machine:/mnt/hgfs/E/pthread# 
root@camera-virtual-machine:/mnt/hgfs/E/pthread# 
root@camera-virtual-machine:/mnt/hgfs/E/pthread# ./thread_atfork
hell test 
Prepare: Uocking mutex before fork
main 
Parent: Relocking mutex after forkparent is3644thread_fun 
Child: Resetting mutex after forkchild thread_fun 

http://www.dtcms.com/wzjs/277462.html

相关文章:

  • 兰溪建设局网站万能软文模板
  • 南宁网站建设哪一键搭建网站工具
  • 中国新闻社归哪个部门管关键词排名seo
  • wordpress ffmpeg南宁百度seo公司
  • 1.1做网站的目的怎么做属于自己的网站
  • 怎么用dwcs6做网站设计百度贴吧入口
  • 做自动化设备哪个网站百度关键词搜索引擎
  • 网站建设有关图片关键词搜索排名公司
  • 建一个b2c网站要多少钱b2b平台有哪些
  • 高端品牌男鞋有哪些seo专业培训班
  • 广州网站建设市场手机百度账号申请注册
  • 长沙企业建站系统计算机培训机构排名前十
  • 有什么网站可以做java算法重庆电子商务seo
  • 北京网站改版在线一键建站系统
  • 营销管理软件宁波seo资源
  • 网站建设企业推荐郑州网站公司哪家好
  • 源码开发网站建设百度seo推广是什么
  • 做网站几个步骤查淘宝关键词排名软件有哪些
  • 广州论坛网站广州seo网站排名
  • 最好科技上海网站建设360网址大全
  • 怎么用记事本做网站app推广多少钱一单
  • 国外做游戏的视频网站网址大全123
  • 学生怎么做网站seo是什么地方
  • 顺德建设网站公司个人网页制作
  • 客户管理软件appseo外包公司是啥
  • 抽奖网站做的下去吗seo服务销售招聘
  • 网站模板 协会外贸推广网站
  • 网站上那些轮播图视频怎么做的外贸建站公司
  • wordpress换主题影响大吗南京市网站seo整站优化
  • 电子商务网站开发课程设计seo网络优化师招聘