msg qbytes php,RPC 第七课 信号量相关函数说明

什么是消息队列:

消息队列是消息的链接表,存储在内核中,由消息队列标识符标识。

8a5642837abe946ff44ee36f0e7c647a.png

通过linux所带的命令 可以查看消息队列  ipcs -q

d4247833628d15176cd3932b31407c50.png

我们可以通过msg_set_queue($resouce,[

msg_qbytes=2000

])设置这里面的消息,但是必须是root权限

$key=123456;

if(msg_queue_exists($key)){

echo('msg'.$key.' is exists');

}

$resource =msg_get_queue($key,0666);

if(!$resource){

die('create queue fail');

}

$data=msg_stat_queue($resource);

print_r($data);

//可以设置内核中的数据,单必须是root权限的用户才可以设置

msg_set_queue($resource,[

]);

可以设置的参数如下:

Array

(

[msg_perm.uid] => 0

[msg_perm.gid] => 0

[msg_perm.mode] => 438

[msg_stime] => 0

[msg_rtime] => 0

[msg_ctime] => 1543357344

[msg_qnum] => 0

[msg_qbytes] => 65536

[msg_lspid] => 0

[msg_lrpid] => 0

)

04985f607b4f900026415705e13d8869.png

信号量:与进程通讯不同,它是一个计数器,用于为多个进程提供对共享数据对象的访问,保证两个或多个关键代码不被并发调用。

和我们常说的文件锁是等效的。

c24fb94c6b0c63196153275bf7864d43.png

信号量到底有什么用途?

信号量好比一把锁,防止一个变量 在多进程并发修改。类似不能让一件物超卖。

会占用资源,不被其他资源抢占。

要使用信号量函数,必须在PHP编译的时候,加上

--enable-sysvsem

编译成功后,就可以使用信号量相关的函数了。

下面我们看看信号量有哪些先关的函数:

sem_get() 得到一个信号量id

sem_acquire 获取一个信号量

sem_release 释放一个信号量

sem_remove 移除一个信号量

$key=123456;

信号与信号量的区别:

1.信号:(signal)是一种处理异步事件的方式。信号是比较复杂的通信方式,用于通知接受进程有某种事件发生,除了用于进程外,还可以发送信号给进程本身。

2.信号量:(Semaphore)进程间通信处理同步互斥的机制。是在多线程环境下使用的一种设施, 它负责协调各个线程, 以保证它们能够正确、合理的使用公共资源。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值