我想缓存非线程安全的延迟加载对象。每个线程都应该有它自己的对象组。
我的想法是创建QMap<int, MyObject>
并通过我使用 QThread::currentThreadId()
获得的线程 ID 访问此映射。映射本身将受到读/写互斥体的保护(即,用于写入的唯一锁,用于读取的共享锁)。不会经常访问它。
我不确定这是否真的是个好主意。这种方法有什么问题吗?
最佳答案
来自官方文档( http://doc.qt.io/qt-4.8/qthread.html#currentThreadId )
Warning: The handle returned by this function is used for internal purposes and should not be used in any application code.
看起来这个函数并不打算用作公共(public)函数,因此在您的应用程序中以任何方式使用它可能都不是一个好主意
您是否考虑过使用 std::this_thread::get_id()
或使用 thread_local
静态对象?
关于c++ - 我可以使用 Qt 线程 ID 为每个线程创建唯一的缓存吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45817860/