OCaml

2012-05-28 8 views
13

Unix.sleep फ़ंक्शन पूरे सेकंड के लिए प्रोग्राम को निलंबित कर सकता है, लेकिन आप इसे एक सेकंड से भी कम समय तक निलंबित कैसे कर सकते हैं?OCaml

उत्तर

13

इस के लिए शास्त्रीय यूनिक्स समाधान का चयन का उपयोग करने के() कोई फ़ाइल वर्णनकर्ता के साथ है: सेकंड की दी गई संख्या के लिए

let minisleep (sec: float) = 
    ignore (Unix.select [] [] [] sec) 
+0

और संकेत – ygrek

+0

का चयन करते हैं मैं इस कोशिश की बीच में हो सकता है कि के बारे में भूल नहीं है, यह Unix.Unix_error के साथ विफल (11, "का चयन करें", "")। –

+0

यह मेरे लिए काम करता है, मैंने इसे आज़माकर सुनिश्चित किया है। मै मैक ओएस एक्स 10.7 पर हूं। –

12

Thread.delay फ़ंक्शन सेकंड की दी गई संख्या के लिए थ्रेड को रोकता है, लेकिन यह एक फ्लोट लेता है, जिससे आप थ्रेड को एक सेकंड से भी कम समय तक रोक सकते हैं।

4

से Unix मॉड्यूल

val sleepf : float -> unit 

बंद करो निष्पादन। नींद की तरह, लेकिन सेकेंड के अंश समर्थित हैं।

+2

ध्यान दें कि यह फ़ंक्शन 4.03.0 में जोड़ा गया था। ओकैमल के पहले संस्करणों में इस विशेष कार्य तक पहुंच नहीं है। – hcarty

 संबंधित मुद्दे