1. VS 2008的STL的线程安全的吗?
VS 2008用的是PJ STL。当编译选项为/MT, /MTd, /MD, or /MDd的时候,容器和class complex的线程安全规则如下(容器包括vector, deque, list, queue, stack , priority_queue, valarray, map, multimap, set, multiset, basic_string, bitset):
只是多线程读安全;单个线程写,而没有其他线程读写,也安全;此外,线程安全针对的是对象,而和它们是不是同类型有关(猜想是极少用到static成员罢)。总结一下,四个字,线程不安全。
http://msdn.microsoft.com/ja-jp/library/c9ceah3b%28v=VS.90%29.aspx
2. std::map的实用疑惑
一部分人以为下面的情形,需要初始化,这个不是Java,是不需要如此的。
map<int, set<int> > m;
set<int>& s = m[1];
这里不需要判断m[1]是不是存在(有些代码会写成m[1] = set<int>();)。
3. delegate
有Boost的function用,就用这个。自己写的,不是功能不全,要么就是效率不高。
我剽窃了各个方面的代码,写了一个不完全的示例;还没有完,但是此处就是很多问题的分界线了。怎么选择呢?