什麼將替代pthread_setcanceltype在C++窗口中的線程編程?在C++的windows線程編程中,pthread_setcanceltype的替代方法是什麼?
回答
您可以使用事件作爲同步對象。檢查你的線程,不時有事件的狀態(具有零超時的WaitForSingleObject),如果有信號,返回線程的主函數。要從外部取消線索,只需設置事件。
Windows線程沒有取消點,所以沒有系統取消類型來考慮。因此,在Windows上「取消」一個線程意味着你,開發者需要提出一個策略來告訴線程退出。如果它是一個GUI線程,您可以發佈一個WM_QUIT消息。如果它是一個非GUI線程,那麼它確實取決於線程正在做什麼。你需要分析這個線程,看看你的代碼能否明確地檢查它是否需要繼續或退出。
如果你想避免這個問題並在Win32上獲得pthreads投訴行爲,可以使用pthreads-win32實現。
Windows中的一些阻塞系統調用具有可警告狀態,包括WaitForSingleObject,WaitEx等,類似於各種pthread函數中的取消點。您可以使用類似QueueUserAPC http://msdn.microsoft.com/en-us/library/ms684954%28VS.85%29.aspx的東西來執行pthread_cancel的模擬,取消類型爲PTHREAD_CANCEL_DEFERRED。對於PTHREAD_CANCEL_ASYNCHRONOUS,您可以查看http://locklessinc.com/articles/pthreads_on_windows/上的pthread_cancel的Win32實現,但請閱讀關於此的免責聲明。 – 2011-07-05 23:36:16
我的意思是WaitForSingleObjectEx – 2011-07-05 23:52:19
- 1. C#中的替代方法是什麼#
- 2. 現代方法的線程在C#中
- 3. Python中的替代方法是什麼?
- 4. 在C++中,Diag(k)的替代方法是什麼?
- 5. 在C#中,HttpClient.getStringAsync()方法的同步替代是什麼?
- 6. 什麼是AWT-Windows線程?
- 7. 什麼是Windows中的lstat()替代方法?
- 8. 子過程不是線程安全的,替代方法?
- 9. 什麼是C#中的多繼承的替代方法?
- 10. java.awt.GraphicsConfiguration是否線程安全?有什麼替代方案
- 11. C#多線程 - 使用什麼方法?
- 12. 爲Windows編程MIDI的最佳方法是什麼?
- 13. C編程:下劃線的用法是什麼?
- 14. java.util.calendar的替代方法是什麼?
- 15. session_register($ var)的替代方法是什麼?
- 16. Response.Redirect()asp.net的替代方法是什麼?
- 17. typeFactory.arrayType(xxx)的替代方法是什麼?
- 18. 跨線程編組COM接口的首選方法是什麼?
- 19. 什麼是替代在C + +
- 20. 什麼是C++ 4.3.2中getdate()函數的替代方法?
- 21. C#中Like運算符的替代方法是什麼?
- 22. 什麼是C#中定時器控件的替代方法。 NET
- 23. 什麼是C編程中的LINT_ARGS?
- 24. 線程中斷的替代方案?
- 25. B方法是傳統編程語言的替代方案嗎?
- 26. 在Android中線程的最佳方法是什麼?
- 27. 什麼是在Azure中執行多線程的正確方法
- 28. 什麼是停止線程在android中的好方法
- 29. 可以在Windows Powershell中使用的Gitk的一些替代方法是什麼?
- 30. android的替代方法是什麼:代碼中的條目是什麼?
我有pthread_setcanceltype(PTHREAD_CANCEL_DEFERRED,&OldType); 那裏我做了一些關鍵部分與其他線程後,我執行pthread_setcanceltype(OldType,NULL);我如何在Windows中做到這一點? – Suri 2010-05-14 15:09:03