Kabaca bunu yapmak istiyorum:
İlk iş parçacığı:
- küresel değişkenlere bazı değerler yazın (bir daha asla yazılmayacaklar)
- Bu orta derecede büyük veri olabilir (diziler, dizgiler, vb.). Basitçe yapılamaz
std::atomic<>
.
- Bu orta derecede büyük veri olabilir (diziler, dizgiler, vb.). Basitçe yapılamaz
- spawn diğer konuları
Diğer konular:
- küresel durumu oku
- iş yap vs.
Şimdi, argümanları aktarabileceğimi biliyorum std::thread
, ama bu örnekle C ++ 'ın bellek garantilerini anlamaya çalışıyorum.
Ayrıca, herhangi bir gerçek dünya uygulamasında, bir iş parçacığının yaratılmasının, iş parçacığının o noktaya kadar yazdığı her şeyi "görebildiğinden" emin olan bir bellek engeline neden olacağından oldukça eminim.
Ama sorum şu: bu standart tarafından garanti ediliyor mu?
Bir yana: Sanırım biraz kukla ekleyebilirim std::atomic<int>
ve diğer iş parçacıklarına başlamadan önce yazabilirim, sonra diğer iş parçacıklarında, başlangıçta bir kez okuyun. Bundan önce gerçekleşen tüm makinelerin daha önce yazılmış olan küresel durumun düzgün bir şekilde görülebileceğini garanti edeceğine inanıyorum.
Ama benim sorum, bunun gibi bir şey teknik olarak gerekli mi, yoksa iplik oluşturma yeterli mi?
std::atomic<int>
... Kullanabilirsinstd::atomic_thread_fence
.