1. 程式人生 > >什麼叫做執行緒安全?看strtok函式接觸的一個名詞

什麼叫做執行緒安全?看strtok函式接觸的一個名詞

比如一個 ArrayList 類,在新增一個元素的時候,它可能會有兩步來完成:1. 在 Items[Size] 的位置存放此元素;2. 增大 Size 的值。 在單執行緒執行的情況下,如果 Size = 0,新增一個元素後,此元素在位置 0,而且 Size=1; 而如果是在多執行緒情況下,比如有兩個執行緒,執行緒 A 先將元素1存放在位置 0。但是此時 CPU 排程執行緒A暫停,執行緒 B 得到執行的機會。執行緒B向此 ArrayList 新增元素2,因為此時 Size 仍然等於 0 (注意,我們假設的是新增一個元素是要兩個步驟,而執行緒A僅僅完成了步驟1),所以執行緒B也將元素存放在位置0。然後執行緒A和執行緒B都繼續執行,都增加 Size 的值,結果Size等於2。 那好,我們來看看 ArrayList 的情況,期望的元素應該有2個,而 實際元素是在0位置,造成丟失元素,而且Size 等於 2。這就是“執行緒不安全”了。 轉載自:http://baike.baidu.com/view/1298606.htm