摘要:
在编写多线程程序时,多个线程同时访问某个共享资源,会导致同步的问题,这篇文章中我们将介绍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
瑞尼书苑
阅读(276)
评论(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
瑞尼书苑
阅读(187)
评论(0)
推荐(0)
浙公网安备 33010602011771号