
c
susubuhui
QQ:867289975
展开
-
Socket编程中的EAGAIN
在Linux中使用非阻塞的socket的情形下。(一)发送时 当客户通过Socket提供的send函数发送大的数据包时,就可能返回一个EGGAIN的错误。该错误产生的原因是由于send 函数中的size变量大小超过了tcp_sendspace的值。tcp_sendspace定义了应用在调用send之前能够在kernel中缓存的数据量。当应用程序在socket中设置了O_NDELA转载 2011-10-25 18:07:46 · 963 阅读 · 0 评论 -
CriticalSection 和Mutex 性能比较
Windows下100万次加/解锁测试:CriticalSection用时:31msMutex用时:953ms结论:CriticalSection性能远远高于Mutex(高出约30倍)。因此,在能用CriticalSection时绝不用Mutex,当然,后者可命名,而前者不行,因此,Mutex可用于进程间通信,但CriticalSection通常只能用于线程间通信。另外,Windows上Mutex...转载 2018-05-28 10:32:08 · 747 阅读 · 0 评论 -
c++ 中的锁
这个是在中兴面试中被面试问到的一个题“你知道线程中的自旋锁么?”,我当时一脸懵逼,不知道。回来后整理下,在这里对线程中的锁进行一个学习。线程之间的锁有:互斥锁、条件锁、自旋锁、读写锁、递归锁。一般而言,锁的功能越强大,性能就会越低。1、互斥锁互斥锁用于控制多个线程对他们之间共享资源互斥访问的一个信号量。也就是说是为了避免多个线程在某一时刻同时操作一个共享资源。例如线程池中的有多个空闲线程和一个任务...转载 2018-05-28 10:16:04 · 1192 阅读 · 0 评论 -
【干货】国外程序员整理的 C++ 资源大全
【干货】国外程序员整理的 C++ 资源大全发表于6小时前| 4142次阅读| 来源伯乐在线| 52 条评论| 作者ingerJoe编程语言C++框架开源摘要:C++是在C语言的基础上开发的一种集面向对象编程、泛型编程和过程化编程于一体的编程语言。应用较为广泛,是一种静态数据类型检查的,支持多重编程的通用程序设计语言。关于 C++ 框架、库和资源的一些转载 2014-10-24 17:13:10 · 2525 阅读 · 0 评论 -
Linux下多线程epoll编程
Linux下多线程epoll编程,在高并发下测试通过,可以支持10000用户同时在线,测试服务器为Linode的vps服务器,操作系统为Centos64// cs_network.cpp// created by ccc#include "config.h"#include "cs_network.h"#include #include #define VERSION_SOL转载 2014-07-17 14:29:48 · 11671 阅读 · 0 评论 -
ifstream打开含中文路径文件时失败的问题
最近写程序的时候遇到了使用ifstream打开含中文路径文件时失败的问题,在网上翻了一下,发现这是一个普遍遇到的问题,在很多人的博文中也都给出了一些解决技巧,但大多是转载的东西,很少对这个问题引发的原因有一个清晰、全面的解释。因此,我觉得有必要对该问题引发的原因作一个详细的剖析,希望对遇到同样问题的朋友们能有所帮助。首先,用一个简单的例子来重现一下我所遇到的问题:(1)在VS2008的“P转载 2013-08-07 20:09:32 · 1500 阅读 · 0 评论 -
令人头痛的linux编译错误 “未知存储大小"
#include #include 这两个头文件可以把错误与警告消除#include #include 编译时起码把下面的选项加上,没有坏处gcc -g -O2 -Wall原创 2012-12-08 13:17:56 · 5517 阅读 · 0 评论 -
c++ Lock
头文件ZhkMutex.h#pragma once#include #pragma comment(lib, "Kernel32.lib")#define synchronized(M) for(ZhkLock M##_lock=M; M##_lock; M##_lock.SetUnlock())class ZhkMutex{public: ZhkMutex(v原创 2012-05-24 13:16:12 · 4207 阅读 · 0 评论 -
BCD INT 转换
unsigned long BCDToDec(const unsigned char *bcd, int length) { int tmp; unsigned long dec = 0; for(int i = 0; i < length; i++) { tmp = ((bcd[i] >> 4) & 0x0F) * 10 +转载 2012-06-11 15:13:47 · 4098 阅读 · 1 评论 -
iocp 修改
感谢原作者:http://blog.youkuaiyun.com/phunxm/article/details/6140858《A Simple IOCP Server/Client Class》 一.项目概述1.pre:预编译器文件stdafx。 2.app:MFC主线程。 BOOL CIOCPApp::InitInstance() {转载 2012-03-09 13:01:28 · 1780 阅读 · 0 评论 -
malloc,new,VirtualAlloc,HeapAlloc性能(速度)比较
http://www.cppblog.com/woaidongmao/archive/2011/12/02/153160.html这里比较的VC++编译的C++代码中的性能 我用的是VC6.0测试的就不介绍这几个的用法了我写了一段简单的测试代码测试结果是:malloc:390new:391VirtualAlloc:454HeapAlloc:47很明显的是He转载 2012-03-03 15:04:47 · 5916 阅读 · 1 评论 -
IOCP知识点及疑惑
http://hzdiy.iteye.com/blog/7781941. IOCP发送大数量的问题 2. IOCP发送大数量的问题 有A,B两块数据,如AB两块数据,如果A数据比较大,异步只发送了一部分就返回了,B数据已经提交,¬这时候再发A剩下的部分就乱顺序了 ,该如何处理。 所有重叠操作可确保按照应用程序投递的顺序执行. 然而, 不能转载 2012-02-19 20:59:40 · 1856 阅读 · 0 评论 -
IOCP GetQueuedCompletionStatus多线程切换的不确定性
#include#include#include#includeHANDLE m_hCompletionPort;volatile BOOL m_bShutDown;struct TESTOVERLAPPED{ OVERLAPPED m_ol; CHAR szData[512];};UINT WINAPI IOWorkerThreadProc(LPVOID pPa转载 2012-02-16 21:18:18 · 2553 阅读 · 0 评论 -
tcpServer
/******************* tcpServer.c *********************/#include #include #include #include #include #include #include #include #include #include #include #include #include翻译 2012-01-12 10:13:10 · 674 阅读 · 0 评论 -
ip地址和整数转换
inet_addr函数 地址转换, 把"A.B.C.D"的IP地址转换为32位长整数[声明] unsigned long inet_addr ( const char FAR *cp );[参数] cp - 指向IP地址字符串的指针[返回值] 当函数成功调用时返回用32位整数表示的IP地址 失败时返回INADDR_NONE.实际是就是一个按位的排列,比如 A转载 2011-11-08 13:44:47 · 12370 阅读 · 0 评论 -
socket 使用问题
如过 socket 在一个线程中发送,在另一个中发送,如果刚开始 在没有把socket connect 正确 就开始recv,线程将死掉,所以要注意控制先后原创 2011-10-28 15:29:14 · 1201 阅读 · 0 评论 -
C++ 莫名编译错误总结
1 static 变量没有在 cpp 中初始化2 c 文件 在c++ 工程中没有 用 #ifdef __cplusplusextern "C"{#endif #ifdef __cplusplusextern "C"}#endif3 忘了 #include <string>原创 2018-06-01 10:40:31 · 656 阅读 · 0 评论