2017-10-04 118 views
2

我試圖創建結構變量的原子數組。但我不能將值分配給任何數組元素。將值分配給原子用戶定義結構的數組

struct snap { 
     int number; 
     int timestamp; 
    }; 

atomic<snap> *a_table; 

void writer(int i, int n, int t1) 
{ 
    int v, pid; 
    int t1; 
    a_table = new atomic<snap>[n]; 
    pid = i; 
    while (true) 
    { 
     v = rand() % 1000; 
     a_table[pid % n]->number = v; 
     this_thread::sleep_for(chrono::milliseconds(100 * t1)); 
    } 
} 

a_table[pid % n]->number = v是否顯示錯誤(表達式必須有指針類型)

+0

a_table [pid%n] .number = v; 這給出了一個錯誤std :: atomic 沒有會員編號 – Uttaran

+0

好的,謝謝我會修補它並報告工作 – Uttaran

回答

2

a_table[pid % n]給你一個std::atomic<snap>,而不是那種類型的指針。

但是,你不能直接做你想要的,你需要使用atomic::store()。因此,改變這種:

a_table[pid % n]->number = v; 

這樣:

snap tmp {v, myTimestamp}; 
a_table[pid % n].store(tmp, std::memory_order_relaxed); 

PS:更多閱讀:如何std::atomic作品。

+1

這就像一個魅力。謝謝 – Uttaran