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

wordpress 网站标题设置方法seo技术是什么意思

wordpress 网站标题设置方法,seo技术是什么意思,怎么做二维码转到网站,苹果cms做网站如果一个多线程程序的某个线程调用了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/8569.html

相关文章:

  • 成都做企业网站竞价推广托管
  • 做网站发布网郑州网站排名优化外包
  • 免费空间领取网站磁力链
  • 有什么做Java笔试题的网站门户网站建站系统
  • 怎么把园林设计网站做的酷炫万网注册域名
  • 手机创建网站的软件百度快速排名平台
  • 武汉高端网站建设百度新闻下载安装
  • nas 做网站服务器最优化方法
  • flash可以做网站吗外贸谷歌seo
  • 惠州h5网站建设临沂今日头条新闻最新
  • 网上赚钱的方法有哪些湛江seo
  • 湖北省建设局网站首页市场营销手段13种手段
  • 网站怎么做数据备份排行榜
  • 魔云手机建站域名注册价格及续费
  • 顺德龙江做网站全能优化大师
  • 合理规划网站seo上海推广公司
  • 78建筑网官网seo薪资
  • 网站建设 推广 公司百度网页版登录
  • 给别人做网站会连累自己吗上海搜索seo
  • 企业网站建设费用预算网站源码
  • 哈尔滨哪里做网站好新东方小吃培训价格表
  • 腾讯云做的网站会被拦截么整合营销传播方案
  • 网站建设结论与改进网站优化设计的基础是网站基本要素及每个细节的优化
  • c#网站开发技术如何做网站
  • 百度爱企查电话人工服务总部视频seo优化教程
  • 滁州做网站公司注册网站多少钱
  • 网页设计与网站建设区别襄阳百度开户
  • 推销什么企业做网站和app6昆明关键词优化
  • 北京网站建设的价格个人能接广告联盟吗
  • 做二手货的网站有哪些站长工具日本