c/c++系统、网络编程
文章平均质量分 51
系统、网络编程
GT19930910
让我们一起来学习c/c++
展开
-
开源C/C++网络库比较:ACE、livevent和Boost
在开源的C/C++网络库中, 常用的就那么几个, 在业界知名度最高的, 应该是ACE了, 不过是个重量级的大家伙, 轻量级的有libevent, libev, 还有 Boost的ASIO。ACE是一个大型的中间件产品,代码20万行左右,过于宏大,一堆的设计模式,架构了一层又一层,使用的时候, 要根据情况,看你从那一层来进行使用。支持跨平台。Boost的ASIO是一个异步IO库,封装了对So...转载 2019-02-28 09:28:51 · 696 阅读 · 0 评论 -
Qt中使用 windows 套接字编程 客户端demo
在Qt里面使用connect需要加上两个::不然会与信号连接冲突WSADATA wsa;if (WSAStartup(MAKEWORD(2, 2), &wsa) != 0){ cout << "WSAStartup failed"<< endl;}m_sockfd = socket(AF_INET, SOCK_STREAM, IPPROT...原创 2018-11-22 09:53:41 · 704 阅读 · 0 评论 -
基于epoll实现的c++聊天室(全代码)
早些时候为了更加熟悉网络编程,所以写了一个聊天程序练练手,但那是纯linux终端实现的,没有界面,最近心血来潮翻出来加了个Qt的简单界面,成了一个简易的局域网聊天室,通过tcp服务器来转发消息,其实最初实现的时候无界面情况下已经实现了单聊群聊文件传输,udp文件传输还实现了补包重传(udp虽然不可靠传输但是比tcp牛逼),有兴趣的同学可以一起来学习和交流。如果有时间的话我会拓展一下其他的功能,包括...原创 2018-11-02 15:03:13 · 3376 阅读 · 6 评论 -
c++网络编程如何处理io
第一种方式通过ioctl来处理(windows下没找到ioctl): 当select或者epoll检测到套接字有数据过来了,那么就用ioctl进行检测 ioctl(sockfd, FIONREAD, &nread);这个函数可以检测套接字里面有多少数据来了,这个数据了会存在nread中,或者说套接字都有一个接收buff(滑动窗口),他可以检测到这个buf...原创 2018-10-31 13:44:26 · 309 阅读 · 0 评论 -
浅谈互斥锁为什么还要和条件变量配合使用
mutex体现的是一种竞争,我离开了,通知你进来。cond体现的是一种协作,我准备好了,通知你开始吧。互斥锁一个明显的缺点是它只有两种状态:锁定和非锁定。而条件变量通过允许线程阻塞和等待另一个线程发送信号的方法弥补了互斥锁的不足,它常和互斥锁一起配合使用。使用时,条件变量被用来阻塞一个线程,当条件不满足时,线程往往解开相应的互斥锁并等待条件发生变化。一旦其他的某个线程改变了条件变量,他将通...转载 2018-11-06 17:25:32 · 1549 阅读 · 0 评论 -
通过socket+mmap以及环形缓存buf实现内存共享通信
通过socket+mmap以及环形缓存buf实现内存共享通信原创 2022-08-10 22:22:17 · 1495 阅读 · 0 评论 -
c++多线程将this指针传入线程函数
linux#include <pthread.h>class CIOModel{public: CIOModel(); static void* startrecv(void *arg); void Startrecv();private: pthread_t tid; }#include <>void CIOM...原创 2018-11-02 10:18:58 · 3936 阅读 · 0 评论 -
通过互斥锁和条件变量实现队列的无sleep生产与消费
昨天转了一篇文章将条件变量与互斥锁的结合使用,今天给大家抠出曾经学到的一段高效的处理消息的demo,通过互斥锁实现安全队列,通过条件变量实现队列的工作与休息。目录结构:简单介绍:SignalThread是封装好的线程类,我们所做的核心工作都是在这里完成,其他类也是服务于这里;MessageList是封装好的安全线程类,基于c++ list实现的;MessageHanderImp......原创 2018-11-07 21:12:44 · 383 阅读 · 1 评论 -
对于gtk多线程编程的一些思考以及实践归纳系列(1)
写一个gtk的界面很久了,因为慢慢的在改良我的软件,所以也开始发现一些棘手的问题,当然,我这边指的问题只是gtk线程方面的问题,或者说如何才能执行一个界面以外的任务而使得界面不卡死,这样的任务包括多种多样,我这边有一些完成的方式,还有一些还没实现的,请大家听我一一道来。首先我给大家列举几个gtk中最常见的这方面的函数:g_timeout_add,g_timeout_add_seconds......原创 2018-12-11 10:30:25 · 3467 阅读 · 8 评论 -
c语言通过cond和mutex实现一个高性能线程池
首先说明一下这篇文章其实和我另一篇文章很像,只是另一篇只有一个线程,只要讲述的是cond和mutex的使用,上面是基于c++实现的,封装的稍微好一些,路径:https://blog.csdn.net/FlayHigherGT/article/details/83830956而下面是基于c实现的线程池,模仿大神写的,没用任何c++的特性以及库,通过链表装载任务,代码中的注释以及很明确了,欢迎......原创 2018-12-15 11:40:55 · 1286 阅读 · 0 评论 -
对于gtk多线程编程的一些思考以及实践归纳系列(2)
上一篇提到了一个问题,如何在gtk界面保持友好的情况下(不会卡界面),执行来自于功能上的各种任务(耗时间)呢?在此,我们对于这个问题作出分析。第一种任务:多个连续不断的任务其实,这里面很关键的一个问题就是,我们执行的任务是什么样的任务!!记得上篇文章https://blog.csdn.net/FlayHigherGT/article/details/84932747我们提到的任务其实是一个......原创 2019-04-14 17:17:31 · 805 阅读 · 0 评论 -
关于gdk_threads_add_idle函数的线程安全问题解释
在《对于gtk多线程编程的一些思考以及实践归纳系列(1)》https://blog.csdn.net/FlayHigherGT/article/details/84932747中提到gdk_threads_add_idle函数的线程安全问题,当时测试情况是错误的。我们在主线程中循环将一个全局变量g_num从0++一万次,之后在副线程中采用gdk_threads_add_idle函数将相同的......原创 2019-07-26 12:36:25 · 1015 阅读 · 0 评论 -
c语言异步回调函数的使用
后续更新原创 2020-02-12 20:53:54 · 2953 阅读 · 0 评论 -
c/c++中的一些回调函数(callback)的理解
回调函数分为异步回调和同步回调两种,我们一般来说用的都是用异步的回调,使用我们下面强调一下异步的!异步: 异步回调函数——最核心的作用可以用一个生活中网购的例子来说明: 比如我在网上买了一样东西,就像程序中执行了一个任务(多用于线程中),但是我有不知道这个任务什么时候执行完成,如果我不用回调函数,那么我需要一直去等待,或者说定时去询问这个任务......原创 2020-02-12 20:49:02 · 844 阅读 · 0 评论