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

深圳网站建设及推广服务公司自己做公司网站

深圳网站建设及推广服务公司,自己做公司网站,黄冈市建设信息网站,手机百度关键词排名 网站优化软件我之前在我们的项目里面解决了一个死锁的问题#xff0c;然后我跟一个我的朋友聊了下#xff0c;他让我深入研究下这个问题。大家也可以考虑想我的这个问题。首先我们再看看什么是死锁#xff1f;什么是死锁用个通俗的例子讲一讲死锁死锁从文字理论上说明的是两个线程#… 我之前在我们的项目里面解决了一个死锁的问题然后我跟一个我的朋友聊了下他让我深入研究下这个问题。大家也可以考虑想我的这个问题。首先我们再看看什么是死锁什么是死锁用个通俗的例子讲一讲死锁死锁从文字理论上说明的是两个线程可以认为是两个人A和BA在等待B完成某件事情B又在等待A完成某件事情。那如果在代码中单线程的某个函数有没有可能导致死锁呢我们看下面的代码#includepthread.h #includestring.h #includeerrno.h #includestdio.h #includeunistd.h pthread_mutex_t mutex;int main() {pthread_mutex_init(mutex,NULL);printf(mutex init\n);pthread_mutex_lock(mutex);printf(mutex lock#1\n);pthread_mutex_lock(mutex);printf(mutex lock#2\n);pthread_mutex_unlock(mutex);pthread_mutex_unlock(mutex);pthread_mutex_destroy(mutex);return 0; }你看这样的代码会不会导致死锁呢线程在上锁后又马上继续尝试上锁这样的情况会不会存在类似这样的代码int test_function(void) {//lockdo_something()if(x) return -1//unlock }在上锁后然后下面会因为某种判断后退出下一次进来后又会进行上锁这样的死锁是因为代码逻辑不正确导致的也是很多新手常犯的问题。如果是两个线程死锁的情况呢#include stdio.h #include unistd.h #include stdlib.h #include pthread.hpthread_mutex_t g_mutex_lock; pthread_mutex_t g_mutex_lock2;void *func1(void* args) {printf(%s(),LINE%d\n,__FUNCTION__,__LINE__);pthread_mutex_lock(g_mutex_lock);sleep(1);pthread_mutex_lock(g_mutex_lock2);printf(%s(),LINE%d\n,__FUNCTION__,__LINE__);pthread_mutex_unlock(g_mutex_lock);pthread_mutex_unlock(g_mutex_lock2);return NULL; }void *func2(void* args) {printf(%s(),LINE%d\n,__FUNCTION__,__LINE__);pthread_mutex_lock(g_mutex_lock2);sleep(1);pthread_mutex_lock(g_mutex_lock);printf(%s(),LINE%d\n,__FUNCTION__,__LINE__);pthread_mutex_unlock(g_mutex_lock2);return NULL; }int main(void) {int ret;pthread_t thread_1;pthread_t thread_2;printf(%s(),LINE%d\n,__FUNCTION__,__LINE__);ret pthread_mutex_init(g_mutex_lock, NULL);if (ret ! 0) {printf(mutex init failed\n);return -1;}ret pthread_mutex_init(g_mutex_lock2, NULL);if (ret ! 0) {printf(mutex2 init failed\n);return -1;}pthread_create(thread_1, NULL, func1, NULL);pthread_create(thread_2, NULL, func2, NULL);pthread_join(thread_1, NULL);pthread_join(thread_2, NULL);pthread_mutex_destroy(g_mutex_lock);pthread_mutex_destroy(g_mutex_lock2);printf(%s(),LINE%d\n,__FUNCTION__,__LINE__);return 0; }上面的代码比较典型了线程1拿到1号锁后开始等待2号锁线程2拿到2号锁后就开始等待一号锁。他们属于互相等待的情况。代码输出linuxubuntu:/study$ gcc argc.c -pthread ./a.out main(),LINE37 func1(),LINE11 func2(),LINE23最后线程出现死锁不会正常情况不会导致crash除非代码上因为加锁存在的一些空指针。所以单线程也是有可能导致死锁的。
http://www.pierceye.com/news/981163/

相关文章:

  • 临沂网站建设模板wordpress添加导航页面
  • 有关wordpress教学的网站商标注册号
  • 常用搜索网站浙江立鹏建设有限公司网站
  • 天津做网站优化的公司番禺商城网站建设
  • 网站建设大熊猫点搜营销型网站头部布局的元素
  • wordpress 网站死机淄博专业网站建设价格
  • 网站建设 招标书慈溪机械加工网
  • dede网站怎么做404页面做网站的市场有那么大吗
  • 自己做下载类网站家在深圳网页版
  • 建设银行网站个人客户传奇新服网
  • 河东手机网站建设工作服厂家联系方式
  • 站长工具seo综合查询搭建流程
  • 各省住房和城乡建设厅网站怎样租用个人网站空间
  • 深圳市南山区住房和建设局网站官网桂林两江四湖象山景区讲解导游词
  • 环保网站设计是什么柴沟堡做网站公司
  • 用php和mysql做网站wordpress怎么创建自己的博客
  • 网站建设制作设计珠海百度收录排名
  • 有没有做家具特卖的网站360建筑
  • 网站建设技术架构学校网站建设源代码
  • 无为教育网站网站平面设计培训
  • 广东省建筑网站信誉好的低价网站建设
  • 高端网站建设 杭州做效果图网站
  • 进贤县住房和城乡建设局网站短网址生成网站源码
  • 手机网站用二级目录做的弊端四川建设人员数据网站
  • 做网站什么类型好数据分析师培训需要多少钱
  • 建html5网站合作网站开发
  • 南通网站推广优化公司网站语言切换功能如何做
  • php网站开发案例论文临沂网站建设中企动力
  • 霸州做网站1766534168WordPress全局屏蔽谷歌
  • 织梦做的网站被黑了北京互联网排名