2009-04-17 64 views
1

1.如何理解Windows中的異步io?如何理解Windows中的異步io?

2.如果我寫/讀的東西,使用異步IO文件:

WriteFile(); 
ReadFile(); 
WriteFile(); 

多少個線程不操作系統產生來完成這些任務?

這3個任務是以多線程的方式同時運行,還是以不同的順序依次運行?

3,可我使用異步IO 讀取或寫入同一個文件?

+0

你指的是哪個操作系統? – Seb 2009-04-17 11:08:12

+0

windows系統 – Kim 2009-04-17 11:09:42

回答

0

您的問題:

多少個線程不操作系統產生 完成這些任務?

取決於您是否使用Windows池,iocp等。通常由您決定。

同時和 做3任務運行在多線程的方式或運行陸續只是不同 爲了一個 ?

這取決於你的架構。在一臺單芯機器上,3個任務將會一個接一個地運行,並且命令將會被確定。在多核計算機上,這些可能會一起運行,具體取決於操作系統如何安排線程。

3,可我使用多線程和每個線程使用異步IO讀取 或寫同一個文件?

這就是我的知識,這樣別人會先回答一個。

我建議獲得Windows via C/C++的副本,因爲它有關於異步IO的非常大的一章。

0

我想這取決於你所使用的操作系統使用多線程並在每個線程。但不管怎樣,你都不必擔心,它是透明的,不應該影響你編寫代碼的方式。

0

如果您在Windows中使用標準讀取和寫入,則不必在意系統可能不會立即寫入,除非您正在命令行中寫入內容並等待用戶鍵入某些輸入。操作系統負責確保您寫的內容最終寫入硬盤驅動器,並且會做得更好,無論如何你都可以做到。

如果您正在研究一些奇怪的異步io,請重新格式化您的問題。

2

1.如何理解Windows中的異步io?

閱讀Win32文檔。在網上搜索。不要期望在這裏回答這樣一個廣泛的問題。

2.如果我寫/使用異步IO讀取東西文件:

的WriteFile(); ReadFile(); WriteFile();

操作系統生成多少個線程來完成這些任務?

我不這麼認爲。它將重新使用現有的線程上下文來執行內核函數調用。基本上,操作系統安排工作並借用一個線程來完成它 - 這很好,因爲內核上下文總是相同的。

3,可我使用多線程和每個線程使用異步IO讀寫 相同的文件?

我相信是這樣的,是的。我不知道執行順序是否與提交順序保持一致,在這種情況下,如果您在同一個字節範圍內發出併發讀取/寫入操作,您將獲得不可預知的結果。

0

我建議在Win32編程中尋找Jeffery Richter的書籍。對於這類事情,它們是非常好的指南。 我認爲他在C#上有一本新書(s?),所以請注意不要購買錯誤的書。