2010-07-22 48 views
6

我有以下Perl代碼:將一個變量推送到數組上進行線程安全操作?

push(@myArray, $myValue); 

是操作原子,或者我將需要使用的鎖,如果多個線程將在多個線程來執行此相同的操作?

+0

似乎你想要一個Thrread :: Queue對象。 – MkV 2010-07-22 05:00:00

+0

你是什麼意思'同樣的操作'? @myArray是否共享? – 2010-07-22 06:51:10

回答

2

perl中大多數函數的線程安全性取決於它們的基礎C例程,而對於內置函數,例如push,沒有提及線程安全性,因此您必須假定它不是。

查看perlthrtut手冊頁,特別是標題爲「基本信號量」的部分。使用信號量,您可以在代碼的任意部分強制實現互斥。