C++
wuzhx1
这个作者很懒,什么都没留下…
展开
-
C++ cin.clear()的使用:防止出现死循环
很多时候会使用如下模式写代码,直接使用cin,会出现两种问题:1、 当我们输入英文字母’b’时,它的状态标识改为fail,这个状态标识没有清除,进入死循环。 2、输入ctrl+c等信号,cin将不会等待输入,进入死循环。#include <iostream> using namespace std; int main() { while(1)原创 2017-05-03 15:01:41 · 2623 阅读 · 0 评论 -
Linux C++ 实现线程池
https://blog.csdn.net/qq_25425023/article/details/53914609 线程池中的线程,在任务队列为空的时候,等待任务的到来,任务队列中有任务时,则依次获取任务来执行,任务队列需要同步。 Linux线程同步有多种方法:互斥量、信号量、条件变量等。 下面是根据互斥量、信号量、条件变量封装的三个类。 线程池中用到了互斥量和信...转载 2018-09-07 18:18:06 · 197 阅读 · 0 评论 -
linux下socket编程 select实现非阻塞模式多台客户端与服务器通信
select函数原型如下:int select (int maxfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout);select系统调用是用来让我们的程序监视多个文件句柄(socket 句柄)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有一个或多个...转载 2018-09-07 18:25:50 · 472 阅读 · 1 评论 -
网游服务器中的GUID(唯一标识码)实现-基于snowflake算法
本文中的算法采用twitter的snowflake算法,具体请搜索介绍,原来是用Scala写的,因我项目需要,改写成C++语言,主要用于高效的生成唯一的ID, 核心算法就是毫秒级时间(41位)+机器ID(10位)+毫秒内序列(12位).网上也有好多PHP写的插件模块,核心用了网络通讯将生成的ID发送给PHP使用,没深入研究PHP的模块写法。废话不多说了,还是直接上代码好了。uuid.h...转载 2019-04-11 11:16:58 · 419 阅读 · 0 评论 -
C++11 实现 Twitter Snowflake
SnowflakeIdWorker c++11Twitter Snowflake c++11实现版本代码位置SnowFlake 算法生成的 id 是一个64位大小的整数, 它的结构如下图:- 1位: 不用, 二进制中最高位为1的都是负数, 但是我们生成的id一般都使用整数, 所以这个最高位固定是0.41位: 用来记录时间戳(毫秒级), 注意, 这里存储的不是当前的时间戳,而是...转载 2019-04-11 11:43:50 · 396 阅读 · 0 评论