libuv专题

libuv uv_async_t实现多线程通信

官网试例链接 通过uv_async_init就可以注册监视器async了,其他线程可以通过uv_async_send发送信号给监视器,通知监视器执行回调函数。根据官网描述,uv_async_send可以多次发送,但是最终只会执行一次回调函数,并且,其是线程不安全的,因此,在多线程处理是要注意同步问题。另外稍微说明一下uv_queue_work的两个回调函数,uv_after_work_cb回调函

libuv学习,创建tcp服务端试例

使用libuv,可以非常方便的创建tcp服务端,基本上除了初始化,其他所有的处理都是在回调函数中处理的。可以非常轻松的实现异步读写。其中需要注意的是,uv_read_start的第二个参数,uv_alloc_cb回调函数,在每次接收到数据触发uv_read_cb回调之前都会被调用一次,用来给接收缓存做初始化,如果是每次通过malloc申请的内存,那么就要自己手动free掉,试例中就是使用的

Nodejs 第七十一章(libuv)

libuv 在Node.js中,libuv是作为其事件循环和异步I/O的核心组件而存在的。Node.js是构建在libuv之上的,它利用libuv来处理底层的异步操作,如文件I/O、网络通信和定时器等。 libuv在Node.js中扮演了以下几个重要角色: 事件循环(Event Loop):libuv实现了Node.js的事件循环机制,负责管理事件的调度和执行。事件循环是Node.js的核心

【doghead】ubuntu构建libuv

按照官方的文档2024年3月的版本。 首先构建libuv 最终构建的还得了test 构建过程 zhangbin@DESKTOP-1723CM1:/mnt/d/XTRANS/thunderbolt/ayame/zhb-bifrost$ ls Bifrost-202403 README.md draw player-only worker 大神的带宽估计.png zh

网络编程-libuv介绍

官网 https://libuv.org/ 概要 libuv是一个强大的跨平台异步I/O库,主要用于构建高性能、可扩展的网络应用程序。它最初是为Node.js开发的,用于处理Node.js的异步I/O操作,但随着时间的推移,它也被广泛应用于其他系统,如Luvit、pyuv、Julia等。 I/O(或事件)循环是libuv的核心部分。它建立了所有I/O操作的内容,并且它被绑定到单个线程。只

nodejs的线程模型和libuv库的基本使用

文章目录 nodejs中集成addon本地代码的回调问题单线程事件驱动模型libuvlibuv基本框架 addon中使用libuv代码 nodejs中集成addon本地代码的回调问题 在C++的代码中,回调函数是一个基本的代码调用方式。而在我自己的开发实践中,需要在addon这样一个nodejs的本地化模块中实现一个回调: 基本过程为: JS代码会调用一个C++的本地方法,注

.Net Core核心监听模块LibUv

这几天发现,.Net Core核心中的核心,也就是作为服务器的监听部分,居然用的是Node.Js的LibUv。.Net Core 作为微软最新的一款开源技术栈,其最大的创新就是用KestrelHtppServer构建了自己的专属服务器,取代了传统的IIS作为服务器,也是为了对抗Java Tomcat ,Apache的利器。这款KestrelHtppServer的核心正是 LibUv。 在.Net

视频监听安防平台-libuv库通信协议封装-支持udp和tcpserver同时使用

视频监听安防平台-libuv库通信协议封装-支持udp和tcpserver同时使用 最近在上网找资料的时候,看到libuv的通信库挺强大的,而且一直都有人在维护,所有就使用这个通信库做服务端接收和发送,在库封装好之后,发现在接收和发送消息的时候总是卡主了,才发现是使用libuv库的发送的时候出现的问题,果断将发送直接用底层发送,使用socket发送,下面附注一下libu

学习libuv感悟

文章和libuv关系不是很大,libuv不过是一个引子罢了。 工作到现在不停的总结,学习。突然想,如何能快速学习一个东西。 起初,学习libuv我根本不知道这个东西,只不过是想找一个客户端的网络库。一开始想的就是系统原生的socket,但是想太低级了,而且跨平台不好整。就搜客户端网络库。各种说法纷涌而来。我脑袋里面的架构是c++可以把网络库接口暴露给lua脚本调用就好了。有说libevent的

一种libuv实现websockets服务的解决方案

方法是libuv用多事件循环来驱动。说起来容易,做起来还是比下面的方法更容易: 上图是某位网友的方法代表子大部分网络资料。此方法对部署不友好,因为软件仓库提供的libwebsockets是不能用了。如何简化部署,利用好现有的软件仓库呢? libwebsockets版本历史 libwebsockets曾经是无缝支持libuv的。不过,随着版本号的增大,它对libuv的支持越来越差了。首先快

聊聊 Libuv 最近引入的 io_uring

io_uring 是 Linux 下高性能的异步 IO 框架,网上很多相关资料,我之前也初步分析了一下它的实现,有兴趣的可以查看 https://zhuanlan.zhihu.com/p/387620810。 Libuv 中最近加入了对 io_uring 的支持,那么为什么要把它引入 Libuv 呢?因为 epoll 不支持普通文件的 Poll 能力,所以在 Libuv 中,异步文件 IO 操作

libuv使用的若干个坑

最开始考虑使用muduo,但是仔细看了一下,觉得很多地方其实没有书里写的那么好,网上讨论见到有一个国人做了uvcpp,号称在游戏服务器上运行稳定,我看一下代码还有很多值得借鉴的地方,但是还是有很多不是我喜欢的实现方式,于是自己重新封装了一遍,过程比较艰辛,因为网上资料并不太多,里面很多坑…… 我封装的uv-rpc单次往返时延在0.2ms左右,单链接每秒可以调用256字节的命令2万多次。 htt

tinyweb: C语言 + libuv 开发的最精简的WebServer (附源码)

libuv 是一个高性能事件驱动网络库,是 Node.js 的底层实现。经过我(Liigo)在实际项目中的深度应用,发现 libuv 在代码质量、运行效率、网络吞吐量、稳定性、跨平台等多方面都相当优秀,是一款不可多得的开源产品,可以说从质量到名气都不差。libuv 的缺点是易用性太差,文档严重不足,入手门槛较高。在这些方面它跟陈硕的muduo 库差距很大,muduo的易用性太棒了,还有一本作