仓酷云

标题: 给大家带来Linux多线程的常识先容 [打印本页]

作者: 透明    时间: 2015-1-16 11:29
标题: 给大家带来Linux多线程的常识先容
安装和登录命令:login、shutdown、halt、reboot、mount、umount、chsh
明天再一次看了下Linux多线程的常识。看了看代码是怎样完成的,很high。再具体的看一下这几段代码
  关于线程很仔细的注释百度百科上写的相称好了。偶然间我还得看几遍。地点:百度百科--Linux多线程
  /*
  *临盆者消耗者成绩的多线程互斥把持,源程序出自《Linux收集编程》
  */
  #include<stdio.h>
  #include<pthread.h>
  #include<sched.h>
  void*producter_f(void*arg);
  void*consumer_f(void*arg);
  intbuffer_has_item=0;/*设置缓存数目*/
  pthread_mutex_tmutex;/*设置互斥*/
  intrunning=1;
  intmain(void)
  {
  pthread_tconsumer_t;/*线程参数*/
  pthread_tproducter_t;
  /*不晓得这句为何不给我变蓝色,初始化互斥*/
  pthread_mutex_init(&mutex,NULL);
  /*创立线程*/
  pthread_create(&producter_t,NULL,(void*)producter_f,NULL);
  pthread_create(&consumer_t,NULL,(void*)consumer_f,NULL);
  usleep(1);
  running=0;
  /*守候线程加入,一个线程不克不及够被多个线程守候*/
  pthread_join(consumer_t,NULL);
  pthread_join(producter_t,NULL);
  /*烧毁互斥*/
  pthread_mutex_destroy(&mutex);
  return0;
  }
  void*producter_f(void*arg)
  {
  while(running)
  {
  pthread_mutex_lock(&mutex);/*加锁,进进互斥区*/
  buffer_has_item++;
  printf("product,num:%d
",buffer_has_item);
  pthread_mutex_unlock(&mutex);/*解锁,分开互斥区*/
  }
  }
  void*consumer_f(void*arg)
  {
  while(running)
  {
  pthread_mutex_lock(&mutex);
  buffer_has_item--;
  printf("consumer,num:%d
",buffer_has_item);
  pthread_mutex_unlock(&mutex);
  }
  }
  /*
  *临盆者消耗者成绩的旌旗灯号量把持,能够与上述程序举行对照,出处--同上
  */
  #include<stdio.h>
  #include<pthread.h>
  #include<semaphore.h>
  void*producter_f(void*arg);
  void*consumer_f(void*arg);
  sem_tsem;
  intrunning=1;
  intmain(void)
  {
  pthread_tconsumer_t;
  pthread_tproducter_t;
  sem_init(&sem,0,16);/*旌旗灯号量初始化*/
  pthread_create(&producter_t,NULL,(void*)producter_f,NULL);
  pthread_create(&consumer_t,NULL,(void*)consumer_f,NULL);
  sleep(1);
  running=0;
  pthread_join(consumer_t,NULL);
  pthread_join(producter_t,NULL);
  sem_destroy(&sem);/*烧毁旌旗灯号量*/
  return0;
  }
  void*producter_f(void*arg)
  {
  intsemval=0;/*旌旗灯号量的初始值*/
  while(running)
  {
  usleep(1);
  sem_post(&sem);/*旌旗灯号量+1*/
  sem_getvalue(&sem,&semval);/*失掉旌旗灯号量的值*/
  printf("pro,num:%d
",semval);
  }
  }
  void*consumer_f(void*arg)
  {
  intsemval=0;
  while(running)
  {
  usleep(1);
  sem_wait(&a
12下一页


系统安全相关命令:passwd、su、umask、chgrp、chmod、chown、chattr、sudo、pswho
作者: 透明    时间: 2015-1-16 12:40
标题: 给大家带来Linux多线程的常识先容
买一本命令参考手册是必要的,遇到不知道怎么用的命令可以随时查询,这要比查man文档快.特别适合英语不好。
mp;sem);/*旌旗灯号量-1*/</P>  sem_getvalue(&sem,&semval);
  printf("connum:%d\n",semval);
  }
  }
  /*
  *前提变量来把持线程的同步,依据百度百科代码改编而成,不愿定没有毛病
  */
  #include<stdio.h>
  #include<pthread.h>
  #include<sched.h>
  voiddecrement_count(void);
  voidincrement_count(void);
  /**/
  pthread_mutex_tcount_lock;
  /**/
  pthread_cond_tcount_nonzero;
  unsignedcount;
  intmain(void)
  {
  pthread_tdecrement_t;
  pthread_tincrement_t;
  /*初始化互斥*/
  pthread_mutex_init(&count_lock,NULL);
  pthread_create(&decrement_t,NULL,(void*)&decrement_count,NULL);
  pthread_create(&increment_t,NULL,(void*)&decrement_count,NULL);
  usleep(1);
  pthread_join(decrement_t,NULL);
  pthread_join(increment_t,NULL);
  pthread_mutex_destroy(&count_lock);
  return0;
  }
  voiddecrement_count(void)
  {
  pthread_mutex_lock(&count_lock);
  while(count==0)
  {/*使线程堵塞在一个前提变量上线程能够被函数pthread_cond_signal函数叫醒*/
  pthread_cond_wait(&count_nonzero,&count_lock);
  }
  count=count-1;
  pthread_mutex_unlock(&count_lock);
  }
  voidincrement_count(void)
  {
  pthread_mutex_lock(&count_lock);
  if(count==0)
  {/*它用来开释被堵塞在前提变量cond上的一个线程*/
  pthread_cond_signal(&count_nonzero);
  }
  count=count+1;
  pthread_mutex_unlock(&count_lock);
  }
</p>
上一页12


初学阶段只要把上课时候学习过的命令练熟就可以了.单靠学习各种命令而成为高手是不可能的。
作者: 简单生活    时间: 2015-1-27 10:34
其次,Linux简单易学,因为我们初学者只是学的基础部分,Linux的结构体系非常清晰,再加上老师循序渐进的教学以及耐心的讲解,使我们理解起来很快,短期内就基本掌握了操作和运行模式。
作者: 小妖女    时间: 2015-2-5 12:40
可以说自己收获很大,基本上完成了老师布置的任务,对于拔高的题目没有去做,因为我了解我的水平,没有时间和精力去做。?
作者: 活着的死人    时间: 2015-2-11 21:56
选择一些适于初学者的Linux社区。
作者: 若相依    时间: 2015-3-11 06:38
即便是非英语国家的人发布技术文档,Linux也都首先翻译成英语在国际学术杂志和网络上发表。
作者: 若天明    时间: 2015-3-18 00:19
随着实验课程的结束,理论课也该结束了,说实话教OS的这两位老师是我们遇到过的不错的老师(这话放这可能不太恰当).
作者: 再现理想    时间: 2015-3-25 10:08
下面笔者在论坛看到的一个好问题: “安装红旗4.0后,系统紫光输入法自带的双拼方案和我的习惯不一样,如何自定义双拼方案解决?谢谢?”这个问题很简练。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2