linux上的gcc相当于微软的关键部分是什么? [英] What are gcc on linux's equivalent to microsoft's critical sections?
问题描述
The Microsoft Visual C++ compilers have the EnterCriticalSection
and ExitCriticalSection
objects to allow for synchronization between threads.
What is the GCC equivalent?
I see references around to __sync_synchronize
along with __scoped_lock
In fact I see mention of a number of atomic __sync
functions along with a number of
__atomic
ones.
I actually have been using __sync_fetch_and_add
for my atomic increment
Should I be using __atomic_add_dispatch
instead?
What's the difference?
Which ones should I be using? Are there some constructs in C++ that I can use in both the latest version of GCC and Visual C++ 2010 that are available as I'm going to be writing some cross platform code.
I see boost has some functions available, but for various reasons I'm not allowed to use boost under windows.
On Linux (and other Unixen) you need to use PThreads, or Posix Threads. There is no equivalent to Critical Sections on Windows; use a Mutex instead.
EDIT: See first comment below -- apparently Posix Mutexes are the same as Win32 Critical Sections in that they are bound to a single process.
这篇关于linux上的gcc相当于微软的关键部分是什么?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!