atomic

    0熱度

    1回答

    我已經在GPU和我的CPU上爲浮點值的大向量實現了級聯加法函數。這僅僅意味着這個向量殼的所有元素都可以歸結爲一個結果。 CPU算法非常簡單,並且工作正常,但GPU算法總是35200偏離期望的結果。 該算法的最小工作代碼和與CPU的比較如下。 輸出始終是這樣的: CPU Time: 22.760059 ms, bandwidth: 3.514929 GB/s GPU Time (improved

    2熱度

    1回答

    假設用戶正在扭曲MIDI控制器上的旋鈕,並且這些值將作爲遞增和遞減值存儲到我的程序中。以一種方式旋轉旋鈕將發送一系列遞減量,其值取決於旋轉速度;扭轉另一種方式遞增。我想將存儲的值(以及由以下函數發出的值)保持在0到100之間。如果有一條或幾條消息被刪除,那沒有什麼大不了的,但我不希望發生意外的重大更改由OffsetResult_函數發出的值。 我的問題是 - 做下面的內存順序指令看起來正確嗎?對我

    0熱度

    1回答

    繼this link,我試着去理解內核代碼的工作(有2個版本,這個內核代碼,一個與volatile local float *source和其他與volatile global float *source,即local和global版本)。下面我把local版本: float sum=0; void atomic_add_local(volatile local float *source, c

    2熱度

    1回答

    我在寫多線程套接字類。 BelowBounds()函數可以同時從多個線程中調用,我需要阻止使用互斥鎖。這段代碼是否是線程安全的? class UDPSocketHT { public: std::atomic<size_t> m_nSimultaneousRecvCalls; std::atomic<size_t> m_nPendingOperations; //

    0熱度

    2回答

    我試圖運行下面的代碼: 在我的構造我initalize我的原子布爾: Atomic Boolean isChannelActive = new AtomicBoolean(false); 在我寫方法我檢查這個布爾和等待: public ChannelFuture write(ByteBuf msgBuf) { if (!isChannelActive.get()) { try {

    3熱度

    2回答

    具體而言,是存在之間的任何有效差: i = a.load(memory_order_acquire); 或 a.store(5, memory_order_release); 和 atomic_thread_fence(memory_order_acquire); i = a.load(memory_order_relaxed); 或 a.store(5, memory_order_

    1熱度

    1回答

    根據C++標準,std::atomic可與任何可複製類型組合使用。但是,GCC會產生以下錯誤消息: #include <atomic> struct TriviallyCopyableType { int a, b, c, d; }; int main() { std::atomic<TriviallyCopyableType> a; a.store({});

    0熱度

    1回答

    我需要在我的Solr數據庫中創建一個新字段。 我的數據是這樣的: { ID: 「東西」, name_s: 「有些名」 } 我想添加一個新的領域name_t。 問題是我想更新新字段name_t的值爲name_s。我想這樣做到我的整個收集文件。 我期待找到這樣的事情: {ID: 「XXX」,name_t:{添加:$ name_s}} 有沒有辦法做到這一點? 謝謝!

    3熱度

    3回答

    如果使用單個原子變量和std::memory_order_seq_cst,是否保證非原子操作不被重新排序? 舉例來說,如果我有 std::atomic<bool> quux = {false}; void foo() { bar(); quux.store(true, std::memory_order_seq_cst); moo(); } 是bar()不能

    2熱度

    1回答

    假設我有C++中的結構和類: struct Vec { double x; double y; double z; } class VecTracker { Vec latest_vec; std::atomic<double> highest_x; std::atomic<double> highest_y; std::