如何实现GetCurrentThread(线程局部储存)

参考:http://www.cnblogs.com/lzjsky/archive/2010/09/01/1814843.html

可以看到linux和windows上的两种实现方法。pthread有windows兼容库:https://sourceware.org/pthreads-win32/

C++11也提供了thread_local 关键字,如:thread_local void *a; 这个变量里存的数据就是线程局部变量,不同线程读出的内容不同~

vs2015测试项目下载:testthreadloca.7z

有空研究一下vector的insert操作的效率(C++)

参考:http://stackoverflow.com/questions/15009442/c-push-back-vs-insert-vs-emplace

有时候会使用std::vector<char>作为buffer,很好用,但是经常担心insert的效率,通过参考页看出insert的效率貌似是最高的了。但是注意到insert的时候并不知道插入数据的总长度,操作时会先获取总长度,需要检查这个获取长度的操作是否快。如果不快,如何能从外部直接传入插入数据的长度呢?  如果有人已经有结论了可以在评论里交流。

Windows上Opengl开发UI遇到的两个坑

一、GLEW初始化后并不支持新版的opengl函数。 原因是piexlFormart选择了支持向BitMap绘制,这样会使当前opengl环境只支持OpenGL 1.1。

顺便记录一下GLEW使用的几个注意点:

1、头文件要在最前引用 不要在其前边引用gl.h文件 会导致错误。

2、初始化要在wglCreateContext   MakeCurrent之后初始化。并检查返回值是否是 GLEW_OK

3、支持的opengl版本判断使用if(GL_VERSION_x_x) {} (GL_VERSION_4_0)来判断

 

 

二、Opengl可以直接向DIB的DC(设备无关)上绘制,但透明度始终为0.导致updateLayeredWindows时将产生一种特殊的混合效果。(重点:透明度为零,其他颜色数据不为0时 update效果不是纯透明)这将导致误会,实际上只是没有透明度数据引起的。【注:这里的误会是指GDI+函数DrawRectangle  填充色为255时也会引起此效果,设置为254即可,这两个机制不知是否相同,有时间的同学可以试试 然后结果给大家分享一下】

C++11线程安全的队列

才知道一个新知识,还能这样提高效率:http://www.oschina.net/translate/a-fast-lock-free-queue-for-cpp?cmp(快速无锁队列)