- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我需要一个与 InterlockedExchange 等效的程序,我可以使用它来将字符串分配给字符串。这个等效项应该可以在 c++ 中使用。我知道我可以开始实现我自己的基于互斥锁的解决方案,但想知道是否有任何现成的和优雅的解决方案。
谢谢。
最佳答案
恐怕不行。 InterlockedExchange
的全部意义在于它(原子地)在单个 32 位或 64 位(使用 64 位版本)值上工作。字符串涉及内存分配、内存复制和边界检查,所以不能通过这种方式实现。
我估计,最接近的方法是交换两个字符串指针,使它们指向不同的东西(已经分配)。但即便如此,您如何知道该字符串的内容没有被写入?
关于c++ - "InterlockedExchange"用于字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4667824/
InterlockedExchange 和 InterlockedExchangePointer 有什么区别? 是 if( 0 != InterlockedCompareExchange( ( voi
我很困惑,微软说 InterlockedExchange 需要内存对齐,但是,英特尔文档说 LOCK 不需要内存对齐。 我错过了什么,还是什么? 谢谢 来自 Microsoft MSDN 库 平台 S
我需要一个与 InterlockedExchange 等效的程序,我可以使用它来将字符串分配给字符串。这个等效项应该可以在 c++ 中使用。我知道我可以开始实现我自己的基于互斥锁的解决方案,但想知道是
volatile LONG g_lRunning = 1; bool IsRunningEx() { return ::InterlockedExchange(&g_lRunning, 1) =
我已阅读文章Synchronization and Multiprocessor Issues 我对 InterlockedCompareExchange 和 InterlockedExchange
我喜欢检查线程是否在工作。如果线程正在工作,我将等待一个事件,直到线程停止工作。线程将在最后设置的事件。 为了检查线程是否正常工作,我声明了一个 volatile bool 变量。如果线程正在运行,b
我看到一些重复的代码(准确地说是方法),它们进入临界区然后使用 InterlockedExchange...这有意义吗,因为我认为这个操作实际上是原子的,不需要这样的同步? { EnterCric
我有一个 Windows 7 驱动程序,我想在其中同步对变量的访问。我可以使用 InterlockedExchange 吗? 我目前对 InterlockedExchange 的理解是,Interlo
在WindowsAPI上,有 InterlockedExchangeAdd InterlockedExchangeAdd64 InterlockedExchangeSubtract 为什么没有Inte
我已经使用 InterlockedExchange 编写了一个基本的自旋锁(见下文)。然而,我已经看到很多实现都使用 InterlockedCompareExchange。我的方法是否以某种不可预见的
首先,我们有 InterlockedExchange64(); http://msdn.microsoft.com/en-us/library/windows/desktop/ms683593%28v
一个非常简单的方法。两个线程。 volatile __int32 p=0; 一个线程(A)只用 while(1){ ExecuteAVeryCPUIntesiveThing(); In
MSDN 说互锁函数提供了一种简单的机制来同步访问由多个线程共享的变量。 如果变量在进程的共享内存中,我不确定它们是否跨多个进程的线程工作。 同样,GNU GCC 编译器内部函数又如何:__sync_
我在编译器的优化设置中启用了内部函数,但是,InterlockedExchange 的结果代码生成对 kernel32.dll 的调用,而不是生成内联汇编。这尤其成问题,因为该功能在 Vista 之前
Windows API 提供 InterlockedExchange,它以原子方式在内存中设置一个值。仅使用 GCC 内部函数,我想创建一个与该函数等效的函数。设置值然后调用内存屏障是否足够(参见下面
我正在使用 clang power tools编译一个通常使用visual studio编译的项目。 在 boost's lwm_win32.hpp header (是的,我们使用的是旧版本的 boo
我是一名优秀的程序员,十分优秀!