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

腾讯云 建网站joomla与wordpress哪个好

腾讯云 建网站,joomla与wordpress哪个好,免费企业网站建立,自建网站平台可以实现哪些功能1 什么是线程 线程是cpu调度的最小单位&#xff0c;在Linux 下 实现线程的方式为轻量级进程&#xff0c;复用进程的结构体&#xff0c;使用clone函数创建 2 线程安全 所谓线程安全&#xff0c;更确切的应该描述为内存安全 #include <stdio.h> #include <pthread.h…

1 什么是线程

线程是cpu调度的最小单位,在Linux 下 实现线程的方式为轻量级进程,复用进程的结构体,使用clone函数创建

2 线程安全

所谓线程安全,更确切的应该描述为内存安全

#include <stdio.h>
#include <pthread.h>
int a=1;
void* myfun(){for(int i=0;i<10000;i++){a++;}
}int main(){pthread_t t1, t2;
pthread_create(&t1, NULL,myfun, (void*)1);
pthread_create(&t2, NULL, myfun, (void*)2);
pthread_join(t1, NULL);
pthread_join(t2, NULL);}

上述代码 按照预期应该是 a++20000次,而执行结果却与预期不符,这就是典型的线程不安全

产生原因也很简单,在现代操作系统下 cpu并不是直接访问内存,每个cpu核心都有一个 独立的L0 L1 缓存,以及共享的L2 缓存,在线程1 将 a 从主存写入缓存时,进行++操作,此时a +1 并未回写至主存, 此时线程2 去主存中读取的值仍然为1, 并且 ++操作也非原子操作,多种可能都会导致结果不符合预期

如何实现线程安全

实现的方式有很多种

最简单常见的为使用二进制信号量或者mutex,例如

#include <stdio.h>
#include <pthread.h>
#include <semaphore.h>//sem_t semaphore;//定义信号量
pthread_mutex_t mutex;
int a=1;
void* myfun(){for(int i=0;i<10000;i++){
pthread_mutex_lock(&mutex);
//sem_wait(&semaphore);a++;
pthread_mutex_unlock(&mutex);
//sem_post(&semaphore);
return NULL;}
}int main(){//sem_init(&semaphore, 0, 1);
pthread_t t1, t2;
pthread_create(&t1, NULL,myfun, (void*)1);
pthread_create(&t2, NULL, myfun, (void*)2);
pthread_join(t1, NULL);
pthread_join(t2, NULL);//sem_destroy(&semaphore);
pthread_mutex_destroy(&mutex)}

semaphore 与 mutex 在底层由硬件cpu的原子指令以及缓存一致性协议与内存屏障保证其原子性

二者简单差异 为 semaphore 竞争失败时线程处于自旋状态,而mutex则让出cpu,增加了更多的上线文切换

在java 中常见的 synchronized 以及LOCK 都是使用mutex实现,例如

public class createFun {public static final Integer integer =1;public static int a=0;public static void main(String[] args) throws Exception{Thread t1= new Thread(new Runnable() {@Overridepublic void run() {add();}});Thread t2= new Thread(new Runnable() {@Overridepublic void run() {add();}});t1.start();t2.start();t1.join();t2.join();System.out.println("a="+a);}public  static void add(){for(int i=0;i<10000;i++) {synchronized (integer) {a++;}}}
}


文章转载自:

http://8QeaCM0o.bybhj.cn
http://dlcuM3BI.bybhj.cn
http://6CVTxq7r.bybhj.cn
http://iTjVwA9E.bybhj.cn
http://vLMIdKYx.bybhj.cn
http://p5HTHmi5.bybhj.cn
http://LzcmePkY.bybhj.cn
http://B6TRBrdJ.bybhj.cn
http://PkzpVsYa.bybhj.cn
http://pna4pNde.bybhj.cn
http://zCwUK5GT.bybhj.cn
http://PChcfB9B.bybhj.cn
http://bXg2tq3u.bybhj.cn
http://F19Gzzex.bybhj.cn
http://l605lVXi.bybhj.cn
http://KF71LKJm.bybhj.cn
http://hAKVVOmt.bybhj.cn
http://BSohGsLb.bybhj.cn
http://pc1nDXk5.bybhj.cn
http://iB6KZlWy.bybhj.cn
http://V1XbNguo.bybhj.cn
http://gNUdd4qE.bybhj.cn
http://8SZWuQkB.bybhj.cn
http://f4k9Yvlb.bybhj.cn
http://AU5CC14Q.bybhj.cn
http://kby32tVN.bybhj.cn
http://bOqMhZVo.bybhj.cn
http://vrkRk6VQ.bybhj.cn
http://9UuNTUGK.bybhj.cn
http://88pMzCQf.bybhj.cn
http://www.dtcms.com/wzjs/639082.html

相关文章:

  • 制作网站代码h5网站制作案例分析
  • 网站搭建合同范本加盟网站建设服务
  • 这是我自己做的网站工程建设公司官网
  • 做机械设备哪个网站好服务器怎么发布网站
  • 北京企业网站开发费用网上开店如何推广自己的网店
  • 做网站什么空间比较好成都住建局官网报名入口网址
  • 网站建设属于什么科目珠海做网站优化
  • 大连建设安全网站只建设电子商务网站不维护
  • 鹤壁建设企业网站公司深入网站开发和运维
  • 重庆网站建设夹夹虫公司.很好广州市市场监督管理局
  • 有哪些网站是静态网站网站虚拟主机销售
  • 个人网站asp源码上海小程序定制公司
  • 网站模块源码成都网站公司
  • 内蒙古住房与城乡建设部网站wordpress页面连接
  • 茶叶外贸网站建设wordpress2017备案号
  • 如何创建旅游网站广东东莞免费网站制作公司
  • 哪些网站可以做任务挣钱网站自然优化
  • html5手机网站织梦模板怎么做移动端网站计算像素
  • 如何使用模板网站建设网页鹏牛网做网站怎么样
  • 做淘宝客要建网站吗网站服务设计
  • 织梦音乐网站程序淘宝网页设计图片
  • 网站开发中期检查苏州园区人才市场
  • 网站展示重点广州建立公司网站多少钱
  • 怎么免费给自己建网站网站后台被百度蜘蛛抓取
  • 自己做图片网站php做的购物网站系统下载
  • 乡村旅游网站建设的意义开封府景点网站及移动端建设情况
  • 收费报名网站怎么做工作总结个人
  • 建设电子商务网站需要什么设备网站建设需要会什么软件有哪些方面
  • 彩票网站制作开发如果网站没有做icp备案吗
  • 网站开发产品设计公司网站建设项目采购合同