入门指引 Server Client Process AsyncIO Memory HttpServer WebSocket 高级 其他

发布于 2015-08-09 09:46:48 | 666 次阅读 | 评论: 0 | 来源: 网络整理

swoole使用纯C编写,不依赖其他第三方库。

  • swoole并没有用libevent,所以不需要安装libevent
  • swoole并不依赖php的stream/sockets/pcntl/posix/sysvmsg等扩展

socket部分

swoole使用底层的socket系统调用。参见 sys/socket.h

IO事件循环

  • 主进程的事件循环使用select/poll,因为主线程中的文件描述符只有几个,使用select/poll即可
  • reactor线程/worker进程中使用epoll/kqueue

有很多人使用strace -p去查看swoole主进程只能看到poll系统调用。正确的查看方法是strace -f -p

多进程/多线程

  • 多进程使用fork()系统调用
  • 多线程使用pthread线程库

EventFd

Swoole中使用了eventfd作为线程/进程间消息通知的机制。

Timerfd

Swoole使用timerfd来实现定时器

SIgnalfd

swoole中使用了signalfd来实现对信号的屏蔽和处理。可以有效地避免线程/进程被信号打断,系统调用restart的问题。在主进程中reactor线程不会接受任何信号。

最新网友评论  共有(0)条评论 发布评论 返回顶部

Copyright © 2007-2017 PHPERZ.COM All Rights Reserved   冀ICP备14009818号  版权声明  广告服务