multithreading - linux上的gcc相当于微软的关键部分是什么?

标签 multithreading gcc synchronization posix

Microsoft Visual C++ 编译器有 EnterCriticalSectionExitCriticalSection对象以允许线程之间的同步。

什么是 GCC 等价物?

我看到对 __sync_synchronize 的引用连同 __scoped_lock
事实上我看到提到了一些原子__sync功能以及一些__atomic那些。

我其实一直在用__sync_fetch_and_add对于我的原子增量
我应该使用 __atomic_add_dispatch反而?
有什么不同?

我应该使用哪些?是否有一些 C++ 结构可以在最新版本的 GCC 和 Visual C++ 2010 中使用,因为我将要编写一些跨平台代码。

我看到 boost 有一些可用的功能,但由于各种原因,我不允许在 windows 下使用 boost。

最佳答案

在 Linux(和其他 Unixen)上,您需要使用 PThreads 或 Posix Threads。 Windows 上没有等效的关键部分;改用互斥锁。

编辑:见下面的第一条评论——显然 Posix Mutexes 与 Win32 关键部分相同,因为它们绑定(bind)到单个进程。

关于multithreading - linux上的gcc相当于微软的关键部分是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3508507/

相关文章:

java - java中如何实现线程同步而不影响效率

java - 保证并发 Web 服务调用之间数据一致性的最佳执行方法?

c - 具有相同指针的指针运算(数组下标不是整数)

c++ - 在链接时弱定义函数,并测试覆盖

multithreading - 读/写同步

java - wait() - java中的notify()机制以一种奇怪的方式发生故障

python - 在 Python 中与 os.system() 并行运行两个可执行文件?

Java Lock.lock() 和 Lock.lockInterruptically()

C++ 段错误(核心转储)错误 - 将指针转换为线程/将函数值返回给线程

c - 用 Clang 替代 -pg?