我正在尝试将旧的makefile代码转换为CMake.你能帮助我吗?这是我目前陷入困境的部分.我不知道如何将这些参数传递给编译器.
COMPILE_FLAGS = -c -m32 -O3 -fPIC -w -DSOMETHING -Wall -I src/sdk/core
ifdef STATIC
OUTFILE = "bin/test_static.so"
COMPILE_FLAGS_2 = ./lib/ABC.a
else
OUTFILE = "bin/test.so"
COMPILE_FLAGS_2 = -L/usr/lib/mysql -lABC
endif
all:
g++ $(COMPILE_FLAGS) src/sdk/*.cpp
g++ $(COMPILE_FLAGS) src/*.cpp
g++ -fshort-wchar -shared -o $(OUTFILE) *.o $(COMPILE_FLAGS_2)
rm -f *.o
Run Code Online (Sandbox Code Playgroud)
谢谢!
我正在寻找一个并发关联容器,我concurrent_unordered_map从 Thead Building Blocks 中找到了它似乎满足我的所有需求。即使我阅读了文档,我也没有找到一个关于擦除如何工作的例子。
A concurrent_unordered_map supports concurrent insertion and traversal, but not concurrent erasure. The interface has no visible locking. It may hold locks internally, but never while calling user-defined code. It has semantics similar to the C++11 std::unordered_map except as follows:
Run Code Online (Sandbox Code Playgroud)
这实际上意味着什么?只要我仅从单个线程中擦除,从该地图中擦除是否安全?如果没有,我该怎么做?
我正在为单线程应用程序(具有非线程安全的API)开发一个多线程插件.
我当前的插件有两个线程:主线程是应用程序的线程,另一个是用于处理主线程数据的线程.简而言之,第一个创建对象,为它们提供ID,将它们插入到地图中,有时甚至可以访问和删除它们(如果应用程序这样说); 第二个是从该地图读取数据并正在改变对象.
我的问题是:为了使我的插件线程安全,我可以使用哪些技术?