`
aigo
  • 浏览: 2677965 次
  • 性别: Icon_minigender_1
  • 来自: 宜昌
社区版块
存档分类
最新评论

[VC]InterlockedIncrement、InterlockedExchange、InterlockedExchangePointer之间的区别

阅读更多

四者都是windows平台的原子操作,区别如下:

InterlockedIncrement:对一个long类型变量累加,每次都是增加的值为1。与之对应的累减操作接口是InterlockedDecrement。

InterlockedExchangeAdd:对一个long类型变量进行加法操作,加数可以是任意值。

InterlockedExchange:将一个long类型的变量值修改为另一个指定的long值。

InterlockedExchangePointer:将一个指针类型的变量(void*)修改为另一个指定的void*。

 

MSDN官方文档

InterlockedIncrement

https://msdn.microsoft.com/en-us/library/windows/hardware/ff547910(v=vs.85).aspx

 

InterlockedExchangeAdd

https://msdn.microsoft.com/en-us/library/windows/hardware/ff547903(v=vs.85).aspx

 

InterlockedExchange

https://msdn.microsoft.com/en-us/library/windows/hardware/ff547892(v=vs.85).aspx

 

InterlockedExchangePointer

https://msdn.microsoft.com/en-us/library/windows/hardware/ff547904(v=vs.85).aspx

 

 

分享到:
评论

相关推荐

    os_example.rar_InterLockedIncrement_event_vc6.0

    标题“os_example.rar_InterLockedIncrement_event_vc6.0”表明这是一个关于操作系统示例的压缩包,其中涉及到的关键技术包括“InterLockedIncrement”和“Event”,并且这个示例是在Visual C++ 6.0环境下编译的。...

    vc++ 与模块 通讯。

    - **原子操作**:如`InterlockedIncrement`,在多线程环境下保证数据更新的完整性。 3. **VC++中的类库支持**: - **MFC(Microsoft Foundation Classes)**:提供了一套封装了Windows API的C++类库,简化了进程...

    线程同步的五种方法

    Windows API提供了一些原子函数,如`InterlockedIncrement()`、`InterlockedDecrement()`、`InterlockedCompareExchange()`等,这些函数保证了操作的原子性,防止数据竞争。 4. **锁事件(Event)**:事件是一种...

    易语言原子锁与许可区比较

    易语言原子锁与许可区比较源码,原子锁与许可区比较,线程,线程2,InterlockedDecrement,InterlockedIncrement,WaitForSingleObject,CloseHandle

    Windows下实现的读写锁(VS2008环境)

    这些函数包括InterlockedIncrement、InterlockedDecrement、InterlockedExchange等,它们确保了在多线程环境下对32位值的增加、减少或替换操作的原子性,避免了数据竞争的问题。 在实现读写锁时,我们需要两个关键...

    WINDOWS系统编程

    - **原子操作**:在多线程环境中,原子操作确保数据更新不会被其他线程打断,如InterlockedIncrement、InterlockedExchange等。 - **锁机制**:包括互斥锁(Mutex)、信号量(Semaphore)、事件(Event)等,用于...

    windows c++ 原子操作例子

    - **InterlockedExchange**:原子交换操作,用于将变量的值替换为另一个值。 - **InterlockedCompareExchange**:原子比较并交换操作,如果当前值等于预期值,则替换为新值,返回旧值。 2. **C++11及更高版本的...

    VC++创建两个线程 非MFC

    可以使用`InterlockedExchange`、`InterlockedIncrement`等原子操作函数,或者前面提到的线程同步机制来保证。 6. **线程的生命周期管理**: 创建线程后,线程会自动运行直到其线程函数返回。当线程不再需要时,...

    WinAPI (Delphi版)

    InterlockedExchange InterlockedIncrement LeaveCriticalSection OpenEvent OpenMutex OpenProcess OpenSemaphore PulseEvent ReleaseMutex ReleaseSemaphore ResetEvent ResumeThread ...

    快速秒杀windows多线程

    4. CreateThread与_beginthreadex函数的区别:在多线程编程中,CreateThread和_beginthreadex都是用来创建线程的函数,但它们之间存在一些本质的区别。beginthreadex函数是C运行时库提供的函数,而CreateThread是...

    Win32多线程程序设计(源代码).rar

    7. **InterlockedExchange()** 和 **InterlockedIncrement()** 等原子操作函数:在多线程环境下,这些函数保证了对共享变量的修改是线程安全的,避免数据竞争问题。 源代码中可能会包含以下示例: - 线程创建与...

    howto_interlocked_circles_use_uncleess_zip_

    例如,在Windows API中,有诸如InterlockedIncrement、InterlockedDecrement、InterlockedExchange等函数,它们可以无冲突地增加、减少或交换变量的值。这些函数在处理计数器、信号标志等场景时特别有用。在Linux或...

    《Win32多线程程序设计》配套代码

    在Windows API中,有一些线程安全的函数,如`InterlockedExchange`和`InterlockedIncrement`,用于原子操作,防止数据竞争。 文件200661322841697可能包含了书中讲解的各种多线程编程案例,如线程创建、同步、通信...

    Win32 多线程程序设计-线程完全手册--包括例程(Jim Beveridge&Roboert Wiener)

    Win32 API提供了线程安全的容器,如`CRITICAL_SECTION`,以及原子操作函数,如`InterlockedIncrement`和`InterlockedExchange`。 9. **调试多线程程序**:调试多线程程序是一项挑战,因为线程可能在任何时间点执行...

    Thread Synchronization in User Mode

    此外,`InterlockedExchange()` 和 `InterlockedIncrement()` 等其他互锁函数也提供了类似的功能,如交换变量的值或原子地增加一个整数值,确保了操作的完整性。 另一个要考虑的因素是缓存行(Cache lines)。现代...

    多线程代码7.rar多线程代码7.rar多线程代码7.rar

    9. **线程安全的函数和数据结构**:例如,Windows API 提供了一些线程安全的函数,如`InterlockedExchange`和`InterlockedIncrement`,用于原子操作,避免数据竞争。 综上所述,"多线程代码7.rar"可能包含了一个或...

    WIN API.pdf

    - **`InterlockedExchangePointer` 函数**:原子地交换指针。 - **`InterlockedIncrement` 函数**:原子增一。 - **`InterlockedOr` 函数**:原子地执行按位或操作。 - **`InterlockedXor` 函数**:原子地执行按位...

    应用mfc进行windows多线程编程

    为了避免多线程环境下的数据竞争问题,使用`InterlockedIncrement`函数来确保变量加1的操作不会被其他线程打断。另一种方法是在变量声明前加上`volatile`关键字,如`volatile int var;`,以确保编译器不会将此变量...

    os_example.rar_信号量_进程同步

    - 同步机制:除了信号量,还包括互斥锁、条件变量、事件(Event)、自旋锁(如Mutex和CriticalSection)、原子操作(如InterlockedIncrement)等。 3. **Event.cpp**: - Windows操作系统中,事件对象是另一种...

    RW.rar_读者 写者

    在Windows中,我们可以使用原子操作(如InterlockedIncrement/Decrement)来实现计数器的增减,确保其在多线程环境下的正确性。 总结,读者优先写者优先问题的解决需要巧妙地结合同步和互斥机制,Windows提供的线程...

Global site tag (gtag.js) - Google Analytics