概念与术语
1内核里面的一个队列,可以将对象加入到队列中,
2可以选择条件休眠和无条件休眠,一般情况下是条件休眠用得较多。
3作用:阻塞读。当运用程序读数据但是现在姿带还无数据可读时,往往会先挂起,
4让其他线程先走,等有数据可读时或洞再唤醒。
5那么什么时候唤醒呢?怎样唤醒呢?
6这里等待队列就派上用场了。读的时候若无数据可读则加入到等待队列中,
7写入的时候唤醒这个队列。迹团芦
8可以类比运用程序编程中的pthread_cond_wait()与pthread_cond_broadcast()记忆。
函数接口
include/linux/wait.h
挂载就是把硬盘设备连接到某个目录下。比如mount -t vfat -o utf8 /dev/sda1 /mnt/winC,就是把/dev/sda1这个分区(我的机器上对应的是win下的C盘)挂载到/mnt/winC下。目录可以自行创建,好记就行。雀兄挂载以后对目录的 *** 作就是对相应分区的 *** 作。目录的顷腔袭内容变成相应分区下的内容。而原来的内容就看不见了(被隐藏起来了,并没有删除),卸载(比如:umount /mnt/winXC)之后圆枝原来的内容就又回来了。pause函数使调用进程挂起直至捕捉到一个信号。#include
int
pause(void)
返回:-1,errno设置为EINTR
只有执行了一个信号处理程序并从其返回时穗禅,pause才返回。
/*************************************
使用alarm函数定时,然后通过pause()等待alarm函数的信号。
1:使用alarm函数的时候要注意alarm函数的覆盖性,即在一个进程中采用一次alarm函数则该进程之前的alarm函数将毕尺失效。
2:pause函数为将进程挂起,然后等待信号。
3:因为alarm函数在定时器到点的时候产生的信号默认为让该进程退出。因此本代码运行5秒然后直接退出,终端不会输出printf中的语句。
tips:挂起和阻塞的区别为,挂起是进程主动行为猜数尘,阻塞是进程的被动行为。
*************************************/
#include
#include
#include
int
main(int
argc,char
*argv[])
{
int
ret
ret=alarm(5)
pause()
printf("will
this
be
printed?\n")
}
#include
#include
#include
int
main()
{
int
ret
ret=alarm(5)
pause()
printf("I
have
been
waken
up.\n",ret)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)