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

东莞网站制作哪家最便宜电商代运营公司

东莞网站制作哪家最便宜,电商代运营公司,做废塑料生意那个网站最专业,策划公司企业简介一、实现方式 各线程之间栈区独享、并且与进程共享文本段、数据段、堆区,所以可以通过全局变量实现多线程间通信。 int num 0; //创建一个全局变量void *thread1(void *arg) {while (1){num 100; …

一、实现方式

        各线程之间栈区独享、并且与进程共享文本段、数据段、堆区,所以可以通过全局变量实现多线程间通信。

int num = 0;                                          //创建一个全局变量void *thread1(void *arg)
{while (1){num = 100;                                    //线程一中给全局变量num赋值100}return NULL;
}void *thread2(void *arg)
{while (1){printf("num = %d\n",num);                     
//由于多个线程之间共享进程的全局变量,所以当线程一运行后,线程二打印的结果num = 100;
//但由于线程之间宏观并行,运行的先后顺序不确定,所以会存在线程二先与运行的情况,当线程二先运行,这里打印结果是num = 0                                                   }return NULL;
}int main(int argc, const char **argv)
{pthread_t tid1;pthread_t tid2;pthread_create(&tid1, NULL, thread1, NULL);pthread_create(&tid2, NULL, thread2, NULL);pthread_join(tid1, NULL);pthread_join(tid2, NULL);return 0;
}

 线程1先执行,线程2后执行的打印情况(线程间的通讯)

二、锁

1、互斥锁

(1)概念

为了防止多线程操作全局变量带来的资源竞争,需要引入互斥锁的概念

 (2)互斥锁函数接口

man 3 pthread_mutex_init

int pthread_mutex_init(pthread_mutex_t *restrict mutex,

                                   const pthread_mutexattr_t *restrict attr);

功能:

        互斥锁的初始化,锁的初始化得放在线程创建之前

参数:

        mutex:互斥锁的首地址,pthread_nutex_t  lock;(得是全局变量),所有线程共用一把锁

        attr:属性,默认为NULL

返回值:

        成功返回0

        失败返回错误码

man 3 pthread_mutex_lock

int pthread_mutex_lock(pthread_mutex_t *mutex);

功能:

        加锁

int pthread_mutex_unlock(pthread_mutex_t *mutex);

功能:

        解锁

int pthread_mutex_destroy(pthread_mutex_t *mutex);

功能:

        销毁互斥锁 ,锁的销毁得放在线程回收之后

两个都不锁 

int num = 0;void *thread1(void *arg)
{while (1){num = 100;}return NULL;
}void *thread2(void *arg)
{while (1){num = 200;printf("%d\n",num);//线程之间宏观并行,微观串行;所以线程在执行的过程中,会出现以下情况://情况一:线程1先执行,线程二后执行//情况二:线程2先执行,线程1后执行//情况三:线程2执行一半后执行线程1,线程1执行一半后执行线程2,即二者交叉执行//所以这里的打印结果是不确定的}return NULL;
}int main(int argc, const char **argv)
{pthread_t tid1;pthread_t tid2;pthread_create(&tid1, NULL, thread1, NULL);pthread_create(&tid2, NULL, thread2, NULL);pthread_join(tid1, NULL);pthread_join(tid2, NULL);return 0;
}

 打印结果:

锁一个 

int num = 0;
pthread_mutex_t lock;void *thread1(void *arg)
{while (1){num = 100;}return NULL;
}void *thread2(void *arg)
{while (1){//锁一个不行,另一个没锁住还是会干扰到被锁住的线程的执行,两个都锁住才能避免冲突//当两个都锁住后,一个执行完毕不代表另一个会一定接着执行,有可能还会执行第二遍刚执行完毕的线程pthread_mutex_lock(&lock);num = 200;printf("num = %d\n", num);pthread_mutex_unlock(&lock);}return NULL;
}int main(int argc, const char **argv)
{pthread_t tid1;pthread_t tid2;pthread_mutex_init(&lock, NULL);pthread_create(&tid1, NULL, thread1, NULL);pthread_create(&tid2, NULL, thread2, NULL);pthread_join(tid1, NULL);pthread_join(tid2, NULL);pthread_mutex_destroy(&lock);return 0;
}

 打印结果:

锁两个 

int num = 0;
pthread_mutex_t lock;void *thread1(void *arg)
{while (1){pthread_mutex_lock(&lock);num = 100;pthread_mutex_unlock(&lock);}return NULL;
}void *thread2(void *arg)
{while (1){pthread_mutex_lock(&lock);num = 200;printf("num = %d\n", num);pthread_mutex_unlock(&lock);}return NULL;
}int main(int argc, const char **argv)
{pthread_t tid1;pthread_t tid2;pthread_mutex_init(&lock, NULL);pthread_create(&tid1, NULL, thread1, NULL);pthread_create(&tid2, NULL, thread2, NULL);pthread_join(tid1, NULL);pthread_join(tid2, NULL);pthread_mutex_destroy(&lock);return 0;}

执行结果

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

相关文章:

  • 加强镇政府网站建设的通知上海百度搜索优化
  • 高校网站建设前景软文案例大全
  • 集团响应式网站建设如何快速搭建一个网站
  • 做企业网站推广多少钱整合营销活动策划方案
  • 东莞电商公司排名龙泉驿网站seo
  • 珠海门户网站制作费用微信公众号怎么创建
  • 做暖暖无码网站今日足球比赛预测推荐分析
  • 西安制作网站的公司有中国科技新闻网
  • 宝塔搭建wordpress网站seo优化是什么
  • 昆山外贸网站建设推广长沙做网络推广公司的
  • 亚马逊平台官网优化清理大师
  • 重庆付费网站推广网络推广计划书范文
  • 网站建设的步骤过程文库郑州网站
  • 网站建设与网页设计案例教程搜索引擎排名优化技术
  • wordpress媒体1m以上苏州网站优化排名推广
  • 南京电信网站备案丁香人才网官方网站
  • 个人网站备案入口soso搜搜
  • 大丰有没有做网站郑州网络推广效果
  • 微信兼职平台网站开发在线网站建设平台
  • 社区门户网站模板哈尔滨百度网站快速优化
  • ac86u做网站服务器地推团队接单平台
  • 子域名做微信开放平台网站应用公司软文代写
  • 矢量网站动画怎么做推广软文发布平台
  • 网站建设开发招标书网站排名推广工具
  • 培训机构网站设计好吗谷歌seo教程
  • 做相册什么网站好免费b2b推广网站大全
  • 开发网站公司名称关键词整站排名优化
  • 自适应产品网站模板360搜索关键词优化软件
  • 大连服装网站建设seo策略
  • 网站设计优缺点如何创建网站站点