Boost konuları yerine benim uygulamamda C++ 0x iş parçacığı kullanmayı düşünüyorum. Ancak, ben bir interrupt()
yöntemine sahip görünmüyor, çünkü standart C++ 0x iş parçacığı ile sahip olduğumu yeniden nasıl emin olacağından emin değilim.Bekleme C++ 0x iş parçacığı nasıl kesilir?
Benim şu anki kurgusunda:
- işi yöneten bir usta iplik;
- Master'ın komutlarını gerçekleştiren birkaç çalışan iş parçacığı.
İşçiler en az iki farklı koşul değişkeninde wait()
'u arar. Üstadın bir “zaman aşımına uğradı” durumu vardır: bu durumda tüm işçilere durdukları ve o zamana kadar aldıkları sonucu vermelerini söyler. Boost konuları ile master, işçilerin beklemeyi durdurmasına neden olan bir iş parçacığı grubunda interrupt_all()
'u kullanır. Şu anda beklemedikleri takdirde, usta ayrıca işçilerin periyodik olarak kontrol ettiği bir bool
bayrağını da ayarlar.
Ancak, C++ 0x std::thread
içinde interrupt()
için herhangi bir yedek göremiyorum. Bir şey mi özledim? Eğer değilse, yukarıdaki şemayı nasıl uygulayabilirim ki, işçiler sonsuza dek uyuyamazlar mı?
Sanırım Boost iş parçacığı kullanmaya devam edeceğim. Onlar da arabası, ama en azından onlar için kararlı bir çözümüm var. – doublep