我有完全并行的代码,没有依赖性,所以使用 pthreads 是一个自然的选择。不幸的是,只有一种共享资源,即日志文件。
我们不希望日志在任何情况下都逐行交错,因此我不想在每次日志调用时都使用互斥锁,而是想为每个线程打开一个单独的日志文件。但是目前,在整个代码中,都有一个全局变量记录器。
我目前有两个解决方案,但没有一个让我满意。
- 在线程 id 上实现哈希:pthread_self()。
- 将参数从线程创建传递到它调用的每个函数(非常具有侵入性)。
我喜欢一些聪明的方法,让它看起来像我在每个线程中都有一个全局变量,开销很小。
最佳答案
如果每个线程都有自己的日志,请使用 pthread_key_create 和相关函数来维护每个线程的记录器变量。
关于c - 如何使用 pthreads 访问本地存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4418181/