2009-02-05 13 views

cevap

11

: birden fazla parçacığı, tek bir kap erişim durumunda

ve en az bir diş, potansiyel olarak daha sonra kullanıcı kabı kere sırasında parçacıkları arasındaki karşılıklı dışlama sorumludur, mal olabilir.

Her iki ileti diziniz de listeyi değiştirdiğinden, sanırım onu ​​kilitlemelisiniz.

+1

SGI'ın STL STL hem C uygulanan ++ standart kitaplık olarak aynı değildir:

detaylı bilgi için bu konuda bakın. İkincisi eşzamanlılık veya iş parçacığı hakkında hiçbir şey söylemiyor. (Aynı zamanda burada başka birtakım farklılıklar da var. Ama kısaca, SGI'nın stdlib'e uygulayacağını söyleyemezsin. – jalf

1

. Bu işlemler atomik olmak için yeterince basit değildir, bu yüzden uygulama sadece gerekli kilitlemeyi açıkça gerçekleştirirse sadece diş güvenlidirler. Ancak, C++ standardı, bu işlemlerin iş parçacığı güvenli olup olmadığını belirtmez, bu nedenle, karar vermek için tek tek uygulamalara kalmış demektir. Dokümanları kontrol et. (Ya da hangi uygulamayı kullandığınızı bize bildirin)

1

Bir STL uygulamasının iş parçacığı için güvenli olduğu konusunda hiçbir garanti yoktur ve performansa sahip olmasından ötürü çoğunun olmadığını tahmin ederim. Muteks kullanmalısın.

3

En STL uygulamaları Eğer kilitleme olmadan çeşitli örneklerini birkaç parçacığı bir listesi türünden erişebilir sens güvenli ipliğine bağlıdır. Fakat listenin aynı örneğine erişirken kilitlenmelisiniz. thread safty in sgi stl

İlgili konular