首页 >> 大全

libevent实现多线程

2024-01-07 大全 39 作者:考证青年

并不是线程安全的,但这不代表不支持多线程模式。

前几天在微博上看到发了条微博说到和nginx的并发模型,看到评论很多人都说不对

于是自己又查了下,总结一下我所学过的网络库或者网络服务器的并发模型

线程实现方法__线程实现的4种方式

1、muduo:one loop per ,主线程注册事件,通过某种负载均衡机制(round robin)将连接的事件注册到子线程的上,据说也是Netty的方案,最近也正好在学netty,刚好可以验证一下。

另外,muduo还提到了一个()的功能:如果用户在当前线程调用,则回调会同步进行,如果在其他线程调用,则IO线程会被唤醒执行这个。这种跨线程调用是如何实现的?因为其他线程很可能阻塞在上。传统方法是用pipe(后面将提到的多线程),在muduo里面是用(2),将回调放入线程的任务队列,并发送一个大小的消息来唤醒。

2、nginx: + 的工作模式,的微博说是接受连接分配给,事实上不是这样的,只是通过信号管理进程,之间通过来决定是否将监听套接字加入到loop中。所谓的one loop per

_线程实现方法_线程实现的4种方式

3、:这是在网上找的资料,并不是线程安全,但不代表其不支持多线程。的网络部分使用,有一个经典的图描述了其多线程实现:

这里写图片描述

这种消息通知+同步层的机制,通过pipe和一个加锁的任务队列(CQ)实现。与muduo的效果类似。

关于我们

最火推荐

小编推荐

联系我们


版权声明:本站内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 88@qq.com 举报,一经查实,本站将立刻删除。备案号:桂ICP备2021009421号
Powered By Z-BlogPHP.
复制成功
微信号:
我知道了