Linux ve Win32 soket API'lerini kullanıyorum. Programımda, birden çok ileti bir yuva tutamacını paylaşıyor. Özellikle, birden fazla iş parçacığı paylaşılan yuva tutamacıyla (yani, aynı bağlantı noktası) send
numaralı telefonu arar. Bu durumda, iplik güvenliği için bir kilit koymak zorunda mıyım? Cevabı bulamadım. Bir test yapabilirim, ancak deneyimlerinizi duymak istiyorum.C soketi API iş parçacığı güvenli midir?
EDIT: Soket aracılığıyla bu tür veri gönderme işleminin atomik işlem olmadığını biliyorum. İplik güvenliği için kesinlikle bir muteks kullanmalıyız. Ancak, sistem API'sinin kendi iç kilidi olup olmadığını merak ediyordum. Eğer öyleyse, kendi kilidimizi koyarak ihmal edebiliriz.
Bu soru, fprintf
işlevine uygulanabilir. Bu sistem API'larının kendi kilitlerine sahip olacağını merak ediyorum. Benim deneyimime göre, fprintf
'un birden fazla iş parçacığından çağrılması, bir dosya veya stdout üzerinde yarışlar olsa da (yani, tutarsız veya öngörülemeyen çıkışlar olsa da, program çökmedi), programımı öldürmedi. veri yapısı.
Aynı sokete okuma ve yazma birden fazla iş parçacığı benim düşünceme göre de facto tasarım sorunudur. – theMayer