仓酷云
标题:
给大家带来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