[問題] CRT 和 Win32 API 的關係

看板C_and_CPP (C/C++)作者 (HOPE)時間13年前 (2012/12/06 22:02), 編輯推噓4(4010)
留言14則, 5人參與, 最新討論串1/2 (看更多)
VC++中, 盡可能使用 CRT 的 _beginthreadex 少用 WIn32 API CreateThread 原因是 CreateThread 有機會造成記憶體洩漏, 或是不能保證 thread-safe _beginthreadex 其實也是呼叫 CreateThread 並多增加一些操作來避免上述問題發生 看到這裡, 有點混淆了 CRT 和 Win32 API 的關係 CRT 應該是比較底層, 上層是 Win32 API 但 _beginthreadex 的說明, 又好像 Win32 API 再底層 兩者間是怎樣的關係呢? 請各位大大解惑,謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.231.60.117

12/06 22:03, , 1F
CRT 會用 Win32 API 來達成所要求的功能
12/06 22:03, 1F

12/06 22:03, , 2F
你想一下 I/O 之類的函式就知道了
12/06 22:03, 2F

12/06 22:04, , 3F
或者換句話說 Win32 API 角色有點像是 Linux 的 system call
12/06 22:04, 3F

12/06 22:04, , 4F
都是直接跟作業系統要求工作的介面
12/06 22:04, 4F

12/06 22:04, , 5F
那麼使用它們達成功能的 CRT 自然會比較上層了
12/06 22:04, 5F

12/06 23:45, , 6F
MSDN,_beginthreadex ,我沒找到有註明是呼叫 CreateThread
12/06 23:45, 6F

12/06 23:45, , 7F
頂多只有說明,對於 CreateThread行為而言, _beginthreadex
12/06 23:45, 7F

12/06 23:46, , 8F
比 _beginthread 更為貼切。
12/06 23:46, 8F

12/07 00:34, , 9F
其實他是呼叫RtlCreateUserThread (爆) (亂講
12/07 00:34, 9F

12/07 00:34, , 10F
不過話說回來lph(揮) system call在winnt應該比較好說是
12/07 00:34, 10F

12/07 00:34, , 11F
windows native api XD
12/07 00:34, 11F

12/07 05:06, , 12F
樓上的是亂講的嗎怎麼聽起來像真的xD
12/07 05:06, 12F

12/07 06:37, , 13F
_beginthreadex 是開放原始碼的。詳細的差別,只要 google
12/07 06:37, 13F

12/07 06:38, , 14F
同時搜尋 _beginthreadex createthread 就一堆線索了
12/07 06:38, 14F
文章代碼(AID): #1GmALOWh (C_and_CPP)
文章代碼(AID): #1GmALOWh (C_and_CPP)