- 博客(9)
- 收藏
- 关注
原创 虚假唤醒
为什么条件锁会产生虚假唤醒现象(spurious wakeup)?pthread_cond_wait()通常是通过操作系统的系统调用完成的,例如Linux是通过futex,对于这些阻塞的系统调用在进程被信号中断后,就会终止阻塞,并返回EINTR错误。对于read(),write()这些IO操作只需要再次重试即可,但是pthread_cond_wait()不能,因为在本线程拿到EINTR错误到futex重新执行的过程中,已经有其他线程通过pthread_cond_signal或者pthread_cond_
2021-02-08 19:42:03
358
原创 cond.wait()为什么要使用mutex变量来保持同步
cond.wait()为什么要使用mutex变量来保持同步本文将通过一个线程池实例来解释cond.wait()为什么需要使用mutex代码如下,线程池使用生产者和消费者模式,使用一个队列来存储任务,addTask()函数供外部调用不断往队列中生产任务,子线程不断在队列中处理(消费)任务。其中使用condition_variable变量和mutex变量来保证互斥与同步。#include "ThreadPool.h"#include <iostream>using JobFunc
2021-02-08 16:57:51
1482
原创 socket操作封装
socket操作封装本文将unix中的socket相关操作进行封装,使得对socket的调用更加方便、直观头文件SocketHel.h#ifndef SOCKETSHEL__H__#define SOCKETSHEL__H__#include <arpa/inet.h>#include <cstring> //memsetvoid setnbAndcoeHel(int socketfd);int createNonblockingHel(int port
2021-02-07 17:23:51
401
1
原创 Linux的五种IO模型
Linux的五种IO模型 操作系统将内存分为用户空间和内核空间,内核空间中存放的是内核代码和数据,例如进程、线程以及内存的管理,用户空间保存的是用户程序的代码和数据,一般是指应用程序。操作系统和驱动程序运行在内核空间,用户程序在用户空间运行,因此两者不能通过简单地指针传递完成数据传输,必须通过系统调用与内核协助完成IO。 内核会为每个IO设备维护一个缓冲区,当进行系统IO操作时,内核会先查看缓冲区中是否有相应的缓冲数据,如果没有则到设备中读取。完成一次网络输入操作一般包括两个...
2021-02-07 16:29:20
225
原创 emqx假启动解决
emqx假启动解决 今天打开emqx的网页端发现打不开了,以为是日常挂掉,所以就登陆服务器又重启了一下,重启后命令行显示success,但是在网页上登陆仍然不行,因此我查看了一下emqx的状态,即用命令行emqxctl status显示服务并没有启动,因此按照他的提示,查看了控制台,如下:上面显示erlang挂掉了,网上查来查去,并没有找到解决方法,直到我查看了emqx的官方文档,有这样的描述:文档网址如下:https://docs.emqx.net/broker/latest/c.
2020-09-04 20:59:02
3730
原创 初学者配置SSM(SpringMVC+Spring+Mybatis)框架
一、配置Spring框架1.创建一个Maven项目2.创建完后开始编辑pom文件,文件内容如下:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSc...
2019-10-12 22:37:39
210
原创 guns框架企业版添加模块
最近实验室开始做一个项目,要用到guns框架,现如今网上关于guns框架的介绍很少,只有20节左右的介绍课程,而且视频内容也和现在下载的开源版本相差不少,即使实验室购买了企业版并且也拿到了开发文档,但是开发文档也和实际代码有出入,因此若是新手添加模块肯定会走很多的坑,因此今天写下这片技术含量不高,但是内容很实用的文章,希望能给后来者们带来一些帮助。下面介绍guns框架企业版添加模块的具体步骤。(本...
2019-09-21 17:15:12
2944
1
原创 蓝桥杯算法训练(三)————K好数
问题描述如果一个自然数N的K进制表示中任意的相邻的两位都不是相邻的数字,那么我们就说这个数是K好数。求L位K进制数中K好数的数目。例如K = 4,L = 2的时候,所有K好数为11、13、20、22、30、31、33 共7个。由于这个数目很大,请你输出它对1000000007取模后的值。输入格式输入包含两个正整数,K和L。输出格式输出一个整数,表示答
2018-02-06 17:08:57
695
原创 求在1~N中任意选择3个数,求它们最大的最小公倍数
今天在做蓝桥杯练习时遇到一道题,觉得题很新颖,所以写下来便于整理。题的内容是输入一个数N,在1~N内任意选择三个数,求这三个数的最小公倍数最大可以是多少。首先注意是“可以是多少”,他要求的范围是N个数内。根据往常的思维我们很容易想到,三个数互质时最小的公倍数最大。因此这里我们只需分类讨论两种情况即可。(1)奇数-偶数-奇数,此时很显然,三个连续的数若为此情况,三个都是互质的,则此时最大的最小公
2018-01-31 20:31:03
2549
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人