Dosya kilitleme mekanizması ile birlikte POSIX fork/exec kullanan bir Haskell daemon üzerinde çalışıyorum. Benim denemelerim,çalışma zamanı (this thread) ile executeFile
sırasında dosya kilitlerinin miras alınmadığını, +RTS -N
kullanıp kullanmadığımı gösterir. Bu yüzden deemonun -threaded
ile derlenmediğinden emin olmak için bir kontrol eklemek istiyorum. Bunu tespit etmek için taşınabilir bir yolu var mı?Bir programın -dreaded kullanılarak derlenmesi nasıl algılanır?
13
A
cevap
13
Orada örneğin, bunun için Control.Concurrent
bir value olduğunu
$ ghc -fforce-recomp Test.hs; ./Test
[1 of 1] Compiling Main (Test.hs, Test.o)
Linking Test ...
False
$ ghc -fforce-recomp -threaded Test.hs; ./Test
[1 of 1] Compiling Main (Test.hs, Test.o)
Linking Test ...
True
Ve C parçalı source code var:
HsBool
rtsSupportsBoundThreads(void)
{
#if defined(THREADED_RTS)
return HS_BOOL_TRUE;
#else
return HS_BOOL_FALSE;
#endif
}
1
Bu kirli kesmek ve taşınabilir değil olabilir ama linux üzerinde ghc-7.6.3 için çalışır onaylayabilirsiniz:
isThreaded :: IO (Maybe Bool)
isThreaded = do
tid <- forkIO $ threadDelay 1000000
yield
stat <- threadStatus tid
killThread tid
case stat of
ThreadBlocked BlockedOnMVar -> return (Just True)
ThreadBlocked BlockedOnOther -> return (Just False)
_ -> return Nothing
Detaylar için BlockedOnOther docstring bakınız.
module Main (main) where
import Control.Concurrent
main :: IO()
main = print rtsSupportsBoundThreads
Ve testin:
İlgili konular
- 1. Piston'un görüntü kasasını kullanarak bir programın derlenmesi yavaş
- 2. CSS medya sorguları kullanılarak aygıt yönlendirmesi nasıl algılanır? JavaScript'inizde
- 3. Bir programın görünmeden çıkarılması
- 4. Ses kapatılamadığında nasıl algılanır?
- 5. Bir programın çalıştırılması bana
- 6. 1 Bir programın çıkışını
- 7. OpenCV'de bilinen nesneler nasıl algılanır?
- 8. Bir programın CPU benzeşimi nasıl ayarlanır?
- 9. nasıl kullanılır Bir programın yığın boyutu
- 10. Bir programın birden çok örneğini nasıl önleyebilirim?
- 11. Bir x86_64 linux makinesinde gentoo-biyonik derlenmesi
- 12. Bir IronPython kodunun EXE veya DLL'ye derlenmesi
- 13. Ağda cihaz nasıl algılanır?
- 14. WindowState değişiklikleri nasıl algılanır?
- 15. UITextField boşaldığında nasıl algılanır?
- 16. Tablet modu nasıl algılanır
- 17. Üç.js'deki çarpışma nasıl algılanır?
- 18. MKUserTrackingBarButtonItem kullanıldığında nasıl algılanır
- 19. Windows nasıl algılanır?
- 20. Programın çıktı dizisini
- 21. iOS: Bir animasyon bittiğinde nasıl algılanır?
- 22. vimscript: Belirli bir dosya mevcutsa nasıl algılanır
- 23. Bir derleyicinin static_assert desteklemesi nasıl algılanır?
- 24. Bir make dosyasında işletim sistemi nasıl algılanır?
- 25. Java'da bir dosya kategorisi nasıl algılanır
- 26. Django Bir form alanı doldurulduğunda nasıl algılanır?
- 27. Bir uygulama odağı kaybettiğinde nasıl algılanır?
- 28. Bir Silverlight uygulamasından işletim sistemi nasıl algılanır?
- 29. Anonim bir sınıfın örneği nasıl algılanır?
- 30. Güvenilir bir şekilde Mac OS X, iOS, Linux, Windows C önişlemcisi nasıl algılanır?
'setNumCapabilities 2'FC ve 'getNumCapabilities' 1 döndürdüğünü kontrol edin? – Yuras