我一直在讀的書叫多處理器編程的藝術和跨職能來到如get()方法,getandset(),compareandset(),getandIncrease(),getandIncrease()等函數是如何變成原子的?
在它說,這本書上述所有函數都是原子的,我同意,但是我對自己的一些函數如何變成原子函數有了自己的疑問。
爲什麼與功能得到或比較成爲原子? - 因爲它必須等到它達到價值或等待,直到某些條件成爲真實,從而產生障礙,因此是原子性的。
我在想這種方式嗎?有沒有我錯過的東西?
當我做
if (tail_index.get() == (head_index.getAndIncrement())
這是原子?
原子的意思是「不可分割的」。你看不到原子操作的一部分,它所做的一切似乎都是一次發生的。在你的情況下,沒有什麼可以確保你的兩個get方法是作爲一個來執行的,所以我不會把它稱爲原子的。 –