当前位置: 首页>>代码示例>>C++>>正文


C++ atomic::compare_exchange_strong方法代码示例

本文整理汇总了C++中boost::atomic::compare_exchange_strong方法的典型用法代码示例。如果您正苦于以下问题:C++ atomic::compare_exchange_strong方法的具体用法?C++ atomic::compare_exchange_strong怎么用?C++ atomic::compare_exchange_strong使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在boost::atomic的用法示例。


在下文中一共展示了atomic::compare_exchange_strong方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: compare_exchange

	bool compare_exchange(T* expected, T* desired, T** old = NULL) {
		bool success = ptr.compare_exchange_strong(expected, desired);
		if(success && expected != desired) {
			intrusive_ptr_add_ref(desired);
			intrusive_ptr_release(expected);
		}
		if(old)
			*old = expected;
		return success;
	}
开发者ID:HikaruLim,项目名称:music-player-core,代码行数:10,代码来源:IntrusivePtr.hpp

示例2: default_executor

    scheduled_executor default_executor()
    {
        if (!default_executor_instance.load())
        {
            scheduled_executor& default_exec =
                scheduled_executor::default_executor();
            scheduled_executor empty_exec;

            default_executor_instance.compare_exchange_strong(
                empty_exec, default_exec);
        }
        return default_executor_instance.load();
    }
开发者ID:HadrienG2,项目名称:hpx,代码行数:13,代码来源:thread_executor.cpp

示例3: push_back

	void push_back(T elem) {
		// Construct an element to hold it
		synclist_item<T>* itm = new synclist_item<T>();
		itm->value = elem;
		itm->prev.store(m_last.load(boost::memory_order_release), boost::memory_order_acquire);
		itm->next.store(NULL, boost::memory_order_acquire);

		// Insert the element in the list
		synclist_item<T>* tmpItm = itm;
		synclist_item<T>* prevLast = m_last.exchange(tmpItm, boost::memory_order_consume);
		tmpItm = itm;
		synclist_item<T>* null = NULL;
		m_first.compare_exchange_strong(null, tmpItm, boost::memory_order_consume, boost::memory_order_acquire);
		if(prevLast != NULL) {
			prevLast->next.store(itm, boost::memory_order_consume);
		}
		m_length.fetch_add(1, boost::memory_order_consume);
	}
开发者ID:atomiccheese,项目名称:wikimap,代码行数:18,代码来源:linklist.hpp

示例4: setIfEquals

 /** If value is testValue, replace it with setValue.
  * \return true if swap was performed
  */
 bool setIfEquals(T testValue, T setValue)
 { return _value.compare_exchange_strong(testValue, setValue); }
开发者ID:bsautron,项目名称:libqi,代码行数:5,代码来源:atomic.hpp


注:本文中的boost::atomic::compare_exchange_strong方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。