http请求之间实现操作系统层面的通信,有可能吗?

发布于 2022-08-30 16:42:20 字数 464 浏览 15 评论 0

最近在做一个东西, 用python写, wsgi的接口, 部署在sae, sae的服务器应该是nginx吧. 当然, 解决方案不一定是python的, php也可以, 但是千万不要跟我说自己实现一个服务器, 现在是nginx, nginx... .

情况是这样的: 有两个并发的请求, 记作A和B吧, 对于服务器来说是两个线程. A执行到一半, 阻塞下来, 直到B给A发出信号, A才继续执行下去.

这样好像有一个蛮直观的方法: 在cache或者数据库里面设置一个布尔, 当作mutex用. 但是我阻塞的时候, 我就需要不停地去对数据库进行轮询, 这样耗费的资源实在太多. 所以我就想, 有没有办法曲线救国, 去调用系统里的(渣浪的系统大概是Linux, 也就是pthread的) mutex API呢. 如果两个请求同一个进程, 那么也许可以把mutex的地址保存到数据库......好吧我大概想多了.

不要用死循环(就算+sleep)去轮询, 我什么都愿意.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

美男兮 2022-09-06 16:42:20

可否使用命名管道呢

熟人话多 2022-09-06 16:42:20

查阅一下PHP官方文档 进程控制扩展 里面的 posix_kill 是否可以?

清醇 2022-09-06 16:42:20

=_=! 不是太懂题主的意思,可能是说 A 和 B 一块运行,A运行到一半不运行了然后等待 B 的通知再执行,是这个意思么?

如果是这个意思的话我觉得你可以把 A 拆成 A' 和 C 两部分,A' 为接受 B 通知之前的代码,C 为接受 B 通知之后的代码。A' 和 B 执行完毕了都跳转到 C 去执行代码。C 代码首先要检测 A' 和 B 处理的内容是否完备,未完备则停止运行。当然处理的数据都最好用外部的存储存储起来。我觉得这样应该是最简单的实现方法了吧。

另外,如果是 SAE 的话就不要做他想了,限制超多的根本不太可能会让你接触到系统级别的接口之类的。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文