摘要:
错误信息如下:$ git push origin mastererror: The requested URL returned error: 403 while accessing https://github.com/shines77/gzmalloc.git/info/refs?service=git-receive-packfatal: HTTP request failed相关解决办法可参考如下两篇网文:(1). github初试-403错误http://www.cnblogs.com/hanxiangduo/archive/2012/09/03/github.html(2). Pu 阅读全文
摘要:
导致错误 LINK : fatal error LNK1561: entry point must be defined 的原因有很多种, 网上可以搜到很多,一般是函数入口没定义, 或者修改为/subsystem:windows /entry:mainCRTStartup,或者使用下面的语句:#pragma comment( linker, "/subsystem:\"windows\" /entry:\"mainCRTStartup\"" )这里我碰到的情况比较特别, 我的是一个VC 6.0的静态lib工程(VC 2008上编译正常 阅读全文
摘要:
锁无关的(Lock-Free)数据结构在避免死锁的同时确保线程继续Andrei Alexandrescu刘未鹏 译Andrei Alexandrescu是华盛顿大学计算机科学系的在读研究生,也是《Modern C++ Design》一书的作者。他的邮箱是 andrei@metalanguage.com。在Generic沉默了一期之后(研究生的学业总是使人不得不投入百分之百的精力),这一期文章的可写内容突然多得令人似乎有点无所适从.例如,其中之一就是关于构造函数的讨论,特别是转发构造函数(forwarding constructor),(构造函数中的)异常处理,以及两段式(two-stage)对 阅读全文
摘要:
关于Hazard Pointers的话题, 起源于这个文章:实现无锁的栈与队列(4)http://www.cnblogs.com/catch/p/3176636.html其实他的系列文章(3)之前我也看过, 里面写的内容是有小问题的, 不过关键不在这, 我比较看中的是他引入的无锁队列问题. 其实之前也有过人发表过更完整的无锁哈希表的实现, 不过(4)文作者比较多的融入自己的想法(虽然不一定对), 还是有一定启发的. (4)中讨论的Hazard Pointers我比较感兴趣. 阅读全文
摘要:
hazard pointer转载自: http://hi.baidu.com/rodimus/item/f6539cc179894f2f47d5c0ef这是用于解决多线程并发下内存的回收,一块内存被释放之后,并不能直接交回给操作系统,因为可能有别的线程正在读这个数据。那什么时候交还给操作系统呢?不 同的应用不一样。等的时间太短,可能会读到已经释放的内存,会CORE; 时间太长,内存的利用率会下降。以前做检索系统的时候,有些很山寨的方法解决这些问题。通用的解决方案有:(1)加读写锁,应用的时候要注意锁的粒度,锁的粒度太大,并发度低,锁粒太细,需要很多锁,锁本身的资源开销很大。这种情况下一般假设读 阅读全文
摘要:
Lock-Free Data Structures with Hazard Pointers锁无关的数据结构与Hazard指针----操纵有限的资源By Andrei Alexandrescu and Maged Michael刘未鹏(pp_liu@msn.com) 译Andrei Alexandrescu是华盛顿大学计算机科学系的在读研究生,也是《Modern C++ Design》一书的作者。他的邮箱是 andrei@metalanguage.com。Maged Michael是IBM的Thomas J.Watson研究中心的研究员。原文链接: http://www.drdobbs.com 阅读全文
摘要:
优点:1. 灵活性, 可重用性和可扩展性;2. 可以大大减少开发时间,模板可以把用同一个算法去适用于不同类型数据,在编译时确定具体的数据类型;3. 模版模拟多态要比C++类继承实现多态效率要高, 无虚函数, 无继承;缺点:1. 易读性比较不好,调试比较困难;2. 模板的数据类型只能在编译时才能被确定;3. 所有用基于模板算法的实现必须包含在整个设计的.h头文件中, 当工程比较大的时候, 编译时间较长; 阅读全文
摘要:
转自: https://code.google.com/p/effective-c/wiki/EffectiveC条款1:避免把#include指令放在extern "C"里面不知道在你工作过的系统里,能够看到多少类似下面的代码:#ifndef __MY_HANDLE_H__#define __MY_HANDLE_H__#ifdef __cplusplusextern"C"{#endif#include#includetypedefvoid* my_handle_t;my_handle_t create_handle(constchar* name);r 阅读全文
摘要:
转自: http://effective-c.googlecode.com/svn-history/r67/wiki/EffectiveC.wiki==条款1:避免把#include指令放在extern "C"里面== 不知道在你工作过的系统里,能够看到多少类似下面的代码:{{{#ifndef __MY_HANDLE_H__#define __MY_HANDLE_H__}}}{{{#ifdef __cplusplusextern "C" {#endif}}}{{{#include #include }}}{{{typedef void* my_handl 阅读全文
摘要:
在Winodows平台上,网络编程的主要接口就是WinSock,目前大多数的Windows平台上的WinSock平台已经升级到2.0版,简称为WinSock2。在WinSock2中扩展了很多很有用的Windows味很浓的SOCKET专用API,为Windows平台用户提供高性能的网络编程支持。这些函数中的大多数已经不再是标准的“Berkeley”套接字模型的API了。使用这些函数的代价就是你不能再将你的网络程序轻松的移植到“尤里平台”(我给Unix +Linux平台的简称)下,反过来因为Windows平台支持标准的“Berkeley”套接字模型,所以你可以将大多数尤里平台下的网络应用移植到Windows平台下。 阅读全文