libuv 多线程与队列

2023-11-09

libuv 多线程与队列

一、libuv编译环境

 1.可查看另一篇“libuv 介绍与编译”-  http://mp.blog.csdn.net/postedit/79193274


二、原理图

      


程序代码

main.c

#include <stdio.h>
#include <string.h>
#include <stdlib.h>

#include "uv.h"

/*
libuv工作队列:
1.复杂耗时的工作内容放在工作队列,让线程池来处理;
2.线程池处理完后会调传入的回调函数,回到主线程继续处理;
*/

static void uv_work_callback(uv_work_t* req)
{
	//另外一个线程中执行
	printf("work id: %d\n",(int)uv_thread_self());
	printf("work data: %d\n", (int)req->data);
}

static void uv_after_work_callback(uv_work_t* req, int status)
{
	//主线程中执行
	printf("after work id: %d\n", (int)uv_thread_self());
}

//每个函数中打印一下线程id
//mian: id = 0;
//uv_work_callback: id = 156;
//uv_after_work_callback: id = 0;
//说明uv_work_callback在另一个线程中执行;
int main(int argc, char** argv)
{
	printf("main id: %d\n", (int)uv_thread_self());

	uv_loop_t *uv_loop = uv_default_loop();

	//创建工作数据结构,自定义数据结构添加在data中
	uv_work_t uv_work;
	uv_work.data = (void*)2018;

	//添加工作任务到libuv的队列中,libuv的线程池的线程获得锁后即可处理调用uv_work_callback函数,处理完毕后调用uv_after_work_callback函数
	uv_queue_work(uv_loop, &uv_work, uv_work_callback, uv_after_work_callback);

	uv_run(uv_loop, UV_RUN_DEFAULT);

	system("pause");
	return 0;
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

libuv 多线程与队列 的相关文章

  • 如何在 wpf 密码框设置一些默认文本? [复制]

    这个问题在这里已经有答案了 可能的重复 WPF 中的水印文本框 https stackoverflow com questions 833943 watermark textbox in wpf 我可以知道如何在 WPF 的密码框中放入一些
  • LINQ TO ENTITY 无法与枚举类型进行比较

    下面是枚举叶子 public enum Leaves Annual 0 Medical 1 Hospitalization 2 Unpaid 3 下面是linq查询 public ActionResult ApproveLeave int
  • C# Socket.receive连续接收0字节且循环中不阻塞

    我正在尝试用 C 编写一个最简单的多线程 TCP 服务器 它接收来自多个客户端的数据 每次连接新客户端时 都会建立套接字连接 并将套接字作为参数传递给新类函数 之后运行 while 循环并接收数据 直到客户端连接为止 这里的问题是 sock
  • C# 按下按钮时跳出循环

    我有一个简单的 C foreach 循环 如何在按下按钮时跳出循环 它不在backgroundWorker线程中 所以我不能使用backgroundWorker Cancellation Pending 在表单中创建一个布尔标志 将事件处理
  • Qml 中的 FileDialog 在发布中不起作用

    我正在与以下项目合作Qt Quick Control 2 当我尝试在调试模式下运行软件时 FileDialog qml 可以完美打开 但是当我将其部署为发布模式时 它无法工作 这是我的代码 import QtQuick 2 4 import
  • 如何将 list 对象附加到另一个对象

    在 C 中 我有两个list
  • EWS 消息跟踪报告

    我一直在研究如何使用 EWS 从交换中获取消息跟踪报告 但似乎无法查明任何内容 我打算构建一个抓取日志文件的应用程序 但如果我可以通过 EWS 来完成它 那对我正在做的事情会更好 有任何想法吗 我终于能够为我的问题创建一个解决方案 我在 C
  • 有没有一种方法可以在不测试整个应用程序的情况下对类库(通用 Windows)进行单元测试?

    我需要进行单元测试Class Library Universal Windows 但是从 添加新项目 窗口中 我只看到了这一点 该项目使用应用程序容器运行所有测试 它始终打开一个应用程序 由于我不需要所有这些开销 我想知道是否有一种方法可以
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • 使用 .NET Core Razor Pages 将文件下载到浏览器

    使用 ASP NET Razor Pages 我尝试将文件下载到浏览器 在页面 html 中 使用这样的链接效果很好 href DownloadableFiles testB csv download newname gt Download
  • 更改子进程中的 iostream

    现在 我正在开发一个项目 其中我需要启动一个子进程来使用 C 在 Linux 中执行一个新程序 并且我需要重定向标准输入和输出 就像在 C 中一样 它们是cin and cout 到一个文件 这意味着在子进程中 标准输入和输出都是文件 子进
  • 拦截C# HttpClient GetAsync

    我有一个 Web 项目 C MVC5 但没有 WebAPI 和一个简单的 HTTP REST 客户端 该客户端调用外部 REST 服务并获取 accessToken 等 我想检查所有 Get PostAsync 调用对 statusCode
  • 使用 Entity Framework Core 在运行时迁移

    我正在将 PHP Illuminate 应用程序移植到 ASP NET Core EF Core 其中一部分由类似 Wordpress 的安装过程组成 该过程要求提供数据库凭据 然后创建应用程序运行所需的表 本质上 我想在运行时运行某种迁移
  • C# SerialPort BaseStream ReadAsync - CancellationToken 从未取消?

    我尝试以异步方式从串行端口读取数据 请记住操作所花费的时间不得超过指定的时间段 我使用的代码 private async Task
  • 产量回报延迟迭代问题

    我知道yield return 利用了延迟加载 但我想知道我是否可能滥用迭代器或者很可能需要重构 我的递归迭代器方法返回给定的所有祖先PageNode包括pageNode itself public class PageNodeIterat
  • 如何在c#中打印全尺寸图像

    我正在尝试用 C 打印图像 它是由 Adob e Acrobat 从 PDF 创建的完整 8 5x11 尺寸的 tiff 当我使用下面的代码用 C 打印它时 它垂直打印正确 但水平打印不正确 水平方向被推了大约半英寸 我将图像的原点设置为
  • 使用全局 Web API 过滤器属性进行 Unity 依赖注入

    参考这个CodePlex 统一文章 http unity codeplex com discussions 446780我能够使用 WebAPI 控制器获取过滤器属性 如下所示 MyFilterAttribute public class
  • GridView,在代码中添加标题行第 2 部分

    这是这篇文章的延续 但添加了完整的代码 ASP NET GridView 在代码中添加标题行 https stackoverflow com questions 19119004 asp net gridview adding header
  • 为什么我能够使用无效的类指针进行函数调用

    在下面的代码片段中 虽然指针未初始化 但调用仍然成功 temp ptr ptr gt func2 是C 语言特性的问题 还是VC 6编译器的作弊 class temp public temp a 9 int func1 return a b
  • 我该怎么做才能完全关闭与mcu的tcpClient连接?

    我现在正在研究与 ESP32 中运行的 tcp 服务器的 tcp 套接字连接 通信工作正常 但我无法关闭连接 在搜索关闭 重置 tcpClient 上的解决方案后 似乎关闭 tcpClient 的正确方法应该是 tcpClient GetS

随机推荐

  • Illegal base64 character 20

    1 问题 RSA 解密报错 Illegal base64 character 20 2 分析 如果是 url 地址栏传参 只需要UrlDecode 一次 如果开发平台默认 UrlDecode 程序就不用再次 UrlDecode 否则 bas
  • 互联网摸鱼日报(2023-09-05)

    互联网摸鱼日报 2023 09 05 36氪新闻 蔚小理上半年比拼 谁拿住了不下牌桌的筹码 一杯酱香拿铁 年轻人就能爱上茅台 关于瑞幸酱香拿铁的一些疑问 为什么不直接滴酒 是科技与狠活吗 小红书关停自营电商业务 本硕加入抢单 千万外卖员 卷
  • 生成专题3

    文章转自微信公众号 机器学习炼丹术 作者 陈亦新 欢迎交流共同进步 联系方式 微信cyx645016617 学习论文 Analyzing and Improving the Image Quality of StyleGAN 文章目录 3
  • Poco C++库简介

    学习一个框架前 要先明白它的是什么 为什么 怎么用 下面这些文字 是从中文poco官网上转过来的 正如poco c 库的特点 非常清晰 代码风格更是一目了然 poco开发库的特点 非常适合写后台处理程序 效率也是很高的 前台界面程序使用Qt
  • 2022华为杯研究生数学建模解题思路和代码思路

    本博客将持续更新2022研究生数学建模ABCDEF赛题的思路 一 题目 2022华为杯A题 华为题 移动场景超分辨定位问题 在日常家庭生活中 人们可能需要花费大量时间去寻找随意摆放在家中某些角落里的小物品 但如果给某些重要物品贴上电路标签
  • 原子类型AtomicLong用法探究

    AtomicLong 探究 AtomicLong 是 Java 提供的一个原子长整型类 提供了对长整型数据的原子性操作 在多线程环境下 AtomicLong 可以确保对长整型数据的操作是线程安全的 在 Android 中 AtomicLon
  • IBM Websphere安装配置与项目部署

    Websphere安装配置 1 在IBM官网下载安装包 需注册账户 不要偷懒 账户后边需要用到 而且注册不需要审核很简单 一分钟即可搞定 下载地址 下载需要通过审核 可能一天后才可以 点击打开链接 最下方下载win64位版本即可 将得到EX
  • Vrep学习笔记(二)

    四 基于Dummy和path的路径规划 4 1 Dummy和path Path用来自定义各种运动路径 从Path上我们可以给定某一个时刻机器人运动到某一点的位置以及其姿态 定义机器人在整个路径中每一时刻的运动过程 V REP中默认的Path
  • 【大数据】分布式机器学习平台

    记录一下团队之前搭建的分布式机器学习平台 功能展示 架构图 平台演变 前端页面 SparkML和sklearn模型训练耗时记录
  • vue从入门到放弃(四)

    vue filter过滤器 filterDemo vue
  • 某省电子税务局网上系统报账及报税状态自动查询(python程序)

    该自动批量查询工具的目的是给一些代记账的公司使用 可以让他们快捷的知道目前有哪些公司需要进行哪些项目的申报 因为他们需要给很多家公司进行报账 多的有四五百家 普遍做法是在税务系统每次都人工登录每个公司 然后查看公司申报状态后进行操作 这样的
  • java和javaEE、Javase有什么区别?

    Java分三个版本 Java SE 标准版 Java EE 企业版 Java ME 微型版 其中SE就是大家学的Java基础 EE是公司最常用的用于网站开发 PC端 ME用于移动端开发 现在熟悉的安卓系统就是用JAVAME开发的 Java既
  • 口罩检测——模型推理(5)

    文章目录 前言 一 推理准备 二 推理代码 三 结果演示 总结 前言 终于等到你 还好我没有放弃 最后一部分 sbb 上代码 一 推理准备 增加一个文件labels txt 内容是我们的标签 注意放置位置 增加一个inference ipy
  • Lexicography——CF1267L构造题

    L Lexicography time limit per test3 seconds memory limit per test512 megabytes inputstandard input outputstandard output
  • 栈的创建和基本操作

    栈 LIFO 限定仅在表尾进行插入和删除操作的线性表 简单来说就是最后一个进入最早出来 顺序栈 用数组实现 下标为0的一端作为栈底 另一端为栈顶 用top作为栈顶指针 我们定义空栈时top 1 栈结构 typedef struct SqSt
  • wr885n虚拟服务器设置,tp-link wr885n如何用手机设置

    摘 要 下面将给大家详细介绍 用手机设置tp link wr885n路由器上网的方法 这是tp link很早就推出的路由器了 第一步 路由器线路连接 tp link wr885n这台路由器上有5个网线接口 下面将给大家详细介绍 用手机设置t
  • std : : unordered_map 、 std : : unordered_set

    一 简介 std unordered map 是C 标准库中的一种关联容器 它提供了一种用于存储键 值对的数据结构 其中键是唯一的 且不会按特定顺序排序 与 std map 不同 std unordered map 使用哈希表作为其底层数据
  • C++实现字典数据结构

    本文使用C 构建了一个字典数据结构 未使用STL 实现了一个学生成绩录入系统 进而实现了字典数据对象的如下功能 新建一个字典 检查字典非空 得到字典的数据长度 插入一个数对 按学生姓名删除对应的字典数据 按分数查找所有符合的学生姓名 按姓名
  • 自动贩卖机的c语言,自动售货机体统c++编程 问题描述】 自动售货机可以售出A、B、C三种商品,价格分别为1元、2元、知道...

    满意答案 include stdio h include conio h structstDrink floatfPrice 价格intiLeft 剩余数 voidPay stDrink pstPay floatfPay 0 0f if p
  • libuv 多线程与队列

    libuv 多线程与队列 一 libuv编译环境 1 可查看另一篇 libuv 介绍与编译 http mp blog csdn net postedit 79193274 二 原理图 程序代码 main c include