我想用投機的方式在球拍中運行一個表達式,希望(但不是特別期待)結果。我的代碼有很長的時間限制。有沒有簡單的方法來運行一些球拍代碼幾秒鐘,然後可靠地殺死它並在截止日期之前執行回退代碼?球拍運行一段時間的線程
5
A
回答
5
3
您可以創建一個「worker」線程來完成工作,而另一個「watcher」線程可以殺死worker。
這在文檔的More: Systems Programming部分進行了描述。
最簡單的,第一切口可滿足您的計算:
(define (accept-and-handle listener)
(define-values (in out) (tcp-accept listener))
(define t (thread
(lambda()
(handle in out)
(close-input-port in)
(close-output-port out))))
; Watcher thread:
(thread (lambda()
(sleep 10)
(kill-thread t))))
不過,如果你正在處理的其他資源閱讀了解保管人。
+0
使用此方法,將第一個線程的結果返回到主線程的最佳方法是什麼? (線程發送)似乎有點難看,我想要的只是像(線程等待t)那樣阻塞t並返回結果。有沒有簡單的方法來做到這一點? – So8res
+0
好點。你可以嘗試一個['channel'](http://docs.racket-lang.org/reference/channel.html) - 讓工作人員'channel-put'成爲正常結果,讓觀察者'channel-put'一個超時結果,並讓主線程執行'channel-get'來等待先到的那個。 –
相關問題
- 1. 並行線程程序運行一段時間,然後攤
- 2. 用emacs運行球拍?
- 3. 在Python中運行一段時間的線程
- 4. C++線程運行時間
- 5. 運行線程一段時間 - 在被殺之前
- 6. 從OS X的終端運行球拍
- 7. 如何在Emacs中運行球拍?
- 8. 如何結構複製只在球拍運行時已知的字段?
- 9. 使用球拍繪製線
- 10. 在長時間運行的線程
- 11. 獲取線程java的運行時間
- 12. 球拍是多次運行過程中的定義形式?
- 13. 如何從Windows運行已編譯的球拍程序
- 14. 測量java短時間運行的線程執行時間
- 15. 運行一段時間的方法
- 16. 球拍中的子過程
- 17. 在特定時間運行java線程
- 18. C++ 11線程錯誤運行時間
- 19. FixedThreadPool線程數和運行時間
- 20. 綁定線程運行時間
- 21. 在一段時間後停止線程
- 22. 在一段時間後停止線程
- 23. 多線程的Java如何讓線程等待一段時間
- 24. 球拍
- 25. 球拍
- 26. 球拍
- 27. 球拍
- 28. 球拍
- 29. 運行DOS命令一段時間
- 30. 運行代碼一段時間
同時發佈的答案不是很可愛嗎? :)說真的,我甚至都不知道「球拍/引擎」,這很整齊。 –