08 2012 档案

摘要:在编写多线程程序时,多个线程同时访问某个共享资源,会导致同步的问题,这篇文章中我们将介绍C++11 多线程编程中的数据保护。数据丢失让我们从一个简单的例子开始,请看如下代码:01#include <iostream>02#include <string>03#include <thread>04#include <vector>0506usingstd::thread;07usingstd::vector;08usingstd::cout;09usingstd::endl;1011classIncrementer12{13private:14in 阅读全文
posted @ 2012-08-29 10:56 瑞尼书苑 阅读(263) 评论(0) 推荐(0) 编辑
摘要:引子1 猜猜看,下面这段代码有什么问题: void Delay(UINT32 n) { while(—n); } 答案: 本来代码完全正常,但是为了优化性能,打开了编译器的优化。但是发现这个函数被编译器优化掉了。为了防止被优化掉,需要给函数的参数加上volatile: void Delay(volatile UINT32 n) { while(—n); } 引子2 再猜猜看,这段代码有什么问题: int square(volatile int *ptr) { return *ptr * *ptr; } 答案: 由于*ptr指向一个volatile型参数,编译器将产生类... 阅读全文
posted @ 2012-08-29 10:40 瑞尼书苑 阅读(183) 评论(0) 推荐(0) 编辑
摘要:try{} catch(…){}以前都是用try{} catch(…){}来捕获C++中一些意想不到的异常,今天看了Winhack的帖子才知道,这种方法在VC中其实是靠不住的。例如下面的代码:try{BYTE* pch ;pch = ( BYTE* )00001234 ;//给予一个非法地址*pch = 6 ; //对非法地址赋值,会造成Access Violation 异常}catch(...){AfxMessageBox( "catched" ) ;}这段代码在debug下没有问题,异常会被捕获,会弹出”catched”的消息框。但在Release方式下如果选择了编译器 阅读全文
posted @ 2012-08-28 14:07 瑞尼书苑 阅读(959) 评论(0) 推荐(0) 编辑
摘要:unix时间相关,也是在标准库里面的。 1.timegm函数只是将struct tm结构转成time_t结构,不使用时区信息 time_t timegm(struct tm *tm); 2.mktime使用时区信息 time_t mktime(struct tm *tm); timelocal 函数是GNU扩展的与posix函数mktime相当 time_t timelocal (struct tm *tm); 3.gmtime函数只是将time_t结构转成struct tm结构,不使用时区信息 struct tm * gmtime(const time_t *clock); ... 阅读全文
posted @ 2012-08-14 11:22 瑞尼书苑 阅读(1575) 评论(0) 推荐(0) 编辑
摘要:在我们使用CentOS系统的时候,CentOS防火墙有时是需要改变设置的。CentOS防火墙默认是打开的,设置CentOS防火墙开放端口方法如下:打开iptables的配置文件:vi /etc/sysconfig/iptables修改CentOS防火墙时注意:一定要给自己留好后路,留VNC一个管理端口和SSh的管理端口下面是一个iptables的示例:# Firewall configuration written by system-config-securitylevel# Manual customization of this file is not recommended.*filt 阅读全文
posted @ 2012-08-04 12:28 瑞尼书苑 阅读(261) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示