c++队列多线程写日志怎么保证时序性?-创新互联

多线程写日志怎么保证时序性?锁定写入文件,或将每个文件的日志放入不同的队列。每次处理队列消息时,其他线程都不能操作队列c++队列 多线程写日志怎么保证
时序性?

首先,设计一个一个线程写一个线程读的队列,该队列有两个指针读写。阅读线程:1。首先判断读写指针。如果读取指针==写入指针,则不返回数据,否则读取数据,然后读取指针1。写入线程:1。(如果使用循环队列)在写入线程进入后检查读写指针。如果读指针=写指针1,那么写线程进入线程开关并继续写,直到读指针移动。(如果数据是可以丢弃的实时数据,则不能进行判断)//为了对数据进行原子化操作,最好将指针保存在循环队列中。2写指针来写数据,1。接下来,考虑当多个线程同时写入时如何实现。首先,申请TLS值(建议使用运行时,而不是API,因为API进程最多只能申请255,这样很容易用完)。然后,每个线程保存上面实现的读写队列,并将队列地址放入一个结构中。每个写线程将数据写入自己线程所拥有的队列,每个写线程将数据写入需要保存的时间计数(getsystemtimeasfiletime)以判断每个队列中节点的顺序。读取线程依次遍历所有队列,取出队列中的值,并按时间计数的顺序进行处理。

成都创新互联专注于绥棱企业网站建设,自适应网站建设,商城网站制作。绥棱网站建设公司,为绥棱等地区提供建站服务。全流程按需搭建网站,专业设计,全程项目跟踪,成都创新互联专业和态度为您提供的服务如何实现多个线程写,一个线程读的队列,并且所有线程?

有很多方法可以使用它。

如果通话频率不高,我会做定量分析程序。通常,我使用C来启用python进程。pypy的速度更快。Pypy将结果生成到redis或mysql的内存表中。调用后,C转到redis或mysql的内存表,也可以用文件写入来完成,但文件写入很容易出现不同步,不想用网络版,可以用SQLite来写结果,然后用SQLite在另一个程序中读取。如果它类似于Internet服务,则可以使用消息队列和消息服务器进行通信。如果您的程序需要线程安全和关键区域保护,最好使用消息队列来支持多线程和多进程同时访问。消息队列比数据库存储速度快,但不便于数据库存储。

vedis的原生版本有C版本,高仿redis的嵌入式版本。您可以使用这个初始开发。如果您需要切换到redis,您可以轻松地将vedis修改为redis。SSDB可以在地面存储redis。SSDB是高仿redis的存储版本。

如果没有数据存储,可以使用套接字通信或多进程通信。例如,chrome是多进程的,命名管道用于通信。理论上,这可以用于多语言之间的调用。命名管道比消息队列快,但需要自定义。调用方法的协议可以用JSON来完成,因此一般可以使用n种多语言。如果我们追求性能,我们可以使用二进制通信协议。

Python调用C语言的方法也很成熟,但需要编写一些代码打包,需要防止内存泄漏、多线程同步、阻塞、异常等问题。

网站栏目:c++队列多线程写日志怎么保证时序性?-创新互联
本文路径:https://www.cdcxhl.com/article28/dhepjp.html

成都网站建设公司_创新互联,为您提供全网营销推广移动网站建设品牌网站设计软件开发动态网站微信小程序

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联

网站托管运营