Oluşturulduktan sonra C++ 11 iş parçacığı başlatılana kadar nasıl beklenir? İş parçacığının çalışıp çalışmadığını kontrol etmek için özel bir yöntem sunan diğer iş parçacıklı kitaplıkların (Qt gibi) aksine, bunun için herhangi bir yönteme sahip görünmüyor.Gerçekte başlatmak için C++ 11 iş parçacığı bekleniyor
cevap
Dil tanımı, yeni iş parçacığının yapıcı dönmeden önce başlamasını gerektirir. Formal olarak, bu [thread.thread.constr]/5: "Kurucunun çağrısının tamamlanması, f kopyasının başlatılmasının başlangıcıyla eşitler."
Neden ilk etapta başlamasını beklemeniz gerektiğinden emin değilim, ancak eğer yaparsanız, bir muteks, bir koşul ve başlatılıp başlatılmadığını belirten bir işaret kullanmanız gerekir. Yeni oluşturulmuş bir iş parçacığında, muteks'i kilitleyin, bayrağı «true» olarak ayarlayın ve koşullu değişken üzerindeki garsona (leri) bildirin. Bir iş parçacığı oluşturan kodda, muteks kilitleyin ve bayrağı denetleyin. Eğer bayrak «doğru» ise - ipiniz başlatılır, eğer «yanlış» ise, koşullu bir değişkende bekleyin ve bir kez uyandığında tekrarlayın.
Teşekkürler. Umduğum daha iyi bir çözüm olduğunu umuyorum, ama sanırım değil. –
Veya Win32'de bir olay gibi bir waitable nesnesi kullanın, sonra mutex veya flag'e ihtiyacınız yoktur, sadece koşul olarak davranan olay. Veya tek başına bir bool bayrağı kullanın ve bayrak ayarlanıncaya kadar oluşturma iş parçacığı döngüsüne sahip olun. Kilitlemene gerek yok. –
@pilcrow: ve değilse? –
- 1. WPF iş parçacığı C#
- 2. sıfırlara bir vektör başlatmak C++/C++ 11
- 3. C++ 11 ile değişken sayıda asenkron iş parçacığı sayısı
- 4. D-Bus iş parçacığı modeli
- 5. İş parçacığı için iyi C++ lib
- 6. İş parçacığı, iki iş parçacığı arasındaki iletişim C#
- 7. C++ haritalarının iş parçacığı güvenliği
- 8. C# iş parçacığı denetimini temizleme
- 9. C++ Çoklu iş parçacığı eşitlemesi
- 10. Race Condition C iş parçacığı
- 11. C#: İş parçacığı karşılaşma olayları
- 12. iş parçacığı
- 13. C++ 11 iş parçacığı API'si: MSVC 2010 için ücretsiz bir uygulama var mı?
- 14. Bir iş parçacığı veya iş parçacığı için bir DAO DAO?
- 15. iş parçacığı içinde yerel depolama iş parçacığı
- 16. İş parçacığı tanıtıcısı iş parçacığı tanıtıcısı
- 17. C++ 'da açlıktan kaynaklanan iş parçacıklarının nasıl önleneceği 11
- 18. C# iş parçacığı açılımı nasıl taklit edilir
- 19. C soketi API iş parçacığı güvenli midir?
- 20. Paralel iş parçacığı sayısını sınırla C#
- 21. Bekleme C++ 0x iş parçacığı nasıl kesilir?
- 22. notifyAll iş parçacığı uyanıyor.
- 23. gdb - iş parçacığı günlüğü
- 24. Kinect ile iş parçacığı
- 25. C++ 11
- 26. Windows iş parçacığı havuzu ve CLR iş parçacığı havuzu
- 27. Arka plan iş parçacığı
- 28. g ++, arka planda pthreads kullanarak C++ 11 iş parçacığı modelinde mi?
- 29. Django/sqlite3 "OperationalError: iş parçacığı yok" iş parçacığı üzerinde
- 30. SimpleHTTPServer iş parçacığı olarak başlatıldı:
Bunun için kullanım durumunuz nedir? – Casey
Evet, lütfen kullanım durumunu açıklayın. C++ 11 iş parçacığı oluşturulduktan hemen sonra "başlatıldı". Konu API'sini "canlı/devam eden" ve "sonlandırılan/biten" kavramının bazılarıyla genişletmek ister misiniz? İş parçacığı etkinliğini başka biriyle senkronize etmek istiyor musunuz? Açıkça başlayana kadar yeni iş parçacıklarının "duraklatılmış" olmasını ister misiniz? Etc. – pilcrow
"Gerçekte başlangıç" ne anlama geliyor? – Casey