none
多行程跟DLL RRS feed

  • 問題

  • 如果用MFC建立一個Dialog的專案
    在MFC裡面call一個MFC建立的DLL
    這個DLL再去建立一個Process
    而這個Process是要執行複雜的數學運算
    這樣的架構有資料可以參考嗎??

    我找了一天,也試了一個晚上
    要用MFC建DLL我會
    使用這個DLL我也會
    但是DLL再去建立的一個Process我就不懂了
    我所知道的就只有三個方法,Winex , sh....,再來就是CreateProcess
    但是我一直搞不懂要怎樣用CreateProcess去建立一個子行程
    第一個參數是指定要使用哪一個exe,但是第二個參數就搞不懂了
    2010年3月9日 下午 04:32

解答

  • HI,

    如果CPU有多核, 建議用平行運算的技巧處理, 如果CPU很爛, 用PROCESS比起用THREAD沒有太大的幫助
    • 已標示為解答 Lolota Lee 2010年3月17日 上午 06:55
    2010年3月16日 下午 01:34

所有回覆

  • 第二個參數是傳給欲啟動的應用程式的命令列參數, 請參考:
    How do I call ::CreateProcess in c++ to launch a Windows executable?
    2010年3月10日 上午 02:54
  • 感謝大大的回覆喔
    但是目前要做的是說用一個MFC做的UI介面
    去載入三個DLL去執行程式
    但是這三個DLL都是獨立的Process不是Thread

    我弄了一個早上
    我想不管是MFC產生的DLL或是Win32的DLL
    都無法再沒有.exe檔的情況下
    不管用哪一種方法都沒辦法產生一個Proecess
    所以我想說就寫一個可以從CreateProcess去下Command Line的exe,
    然後從DLL的函式去產生這一個Process,但是有脫褲子放屁的感覺

    還有一種待驗證的方法,就是用ATL去建立COM元件
    以MFC的UI去載入跟使用COM元件
    但是這個COM元件究竟只是一個DLL還是有Thread的效能
    或是一個Process就不得而知了

    不曉得這樣子的做法對不對
    2010年3月10日 上午 06:25
  • 感謝大大的回覆喔
    但是目前要做的是說用一個MFC做的UI介面
    去載入三個DLL去執行程式
    但是這三個DLL都是獨立的Process不是Thread

    我弄了一個早上
    我想不管是MFC產生的DLL或是Win32的DLL
    都無法再沒有.exe檔的情況下
    不管用哪一種方法都沒辦法產生一個Proecess
    所以我想說就寫一個可以從CreateProcess去下Command Line的exe,
    然後從DLL的函式去產生這一個Process,但是有脫褲子放屁的感覺

    還有一種待驗證的方法,就是用ATL去建立COM元件
    以MFC的UI去載入跟使用COM元件
    但是這個COM元件究竟只是一個DLL還是有Thread的效能
    或是一個Process就不得而知了

    不曉得這樣子的做法對不對
    如連接: http://support.microsoft.com/default.aspx/kb/175986/zh-tw

    • 已編輯 firedra 2010年3月10日 上午 07:44 NA
    2010年3月10日 上午 07:42
  • DLL一般都是直接被程式使用(直接呼叫DLL中的函數)即可, 不需要利用CreateProcess去執行
    2010年3月11日 下午 01:39
  • 趕謝各位大大的回覆
    我的主管給我一個方向
    是使用Rundll32.exe來執行DLL
    目前看起來開起來的應該是Process吧
    但是我還在想要怎麼樣驗證效能會比Thread好
    2010年3月12日 上午 01:08
  • 從啟動速度來看, Create Thread會比Create Process佳

    2010年3月12日 上午 03:32
  • 我的意思不是比較兩種create的速度
    而是說
    Process跟thread如果執行一個很複雜的數學運算
    哪一個比較快???

    有這種很複雜的數學運算式可以提供嗎???
    2010年3月12日 上午 04:02
  • 從啟動速度來看, Create Thread會比Create Process佳, 如果用相同的演算法的話, 執行速度應該沒有什麼差別

    2010年3月12日 上午 05:58
  • 我的意思不是比較兩種create的速度
    而是說
    Process跟thread如果執行一個很複雜的數學運算
    哪一個比較快???

    有這種很複雜的數學運算式可以提供嗎???
    http://www.vckbase.com/document/viewdoc/?id=1465

    matlab與vc的混合運用,matlab我想應該可以符合你要的複雜運算式。

    2010年3月12日 上午 07:34
  • Windows 強制多工若執行優先權相同情況下,每個 Thread 都分到相同的時間。
    Process 可能會開到 4 Thread 以上,就會多了一些無關緊要的東西分 CPU 時間。

    以 CPU Time 來說,Process 跟 Thread 的計算時間是一樣的,但是 Process 會有其他執行緒浪費時間,所以總成本 Process 會比較高。
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年3月12日 下午 02:46
  • 那如果說一個複雜的數學運算
    是多開一個Process來跑比較快
    還是開thread就OK????
    2010年3月13日 下午 03:06
  • 那麼請告訴我,複雜的數學運算對 CPU 的差別在哪裡?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年3月14日 上午 02:54
  • 是這樣的
    因為目前要執行程式的CPU很爛
    平均做一張讀片的處理需要30秒,以thread來做
    所以希望得到OS更多的資源
    所以才會小要用Process來做

    至於修改影響處理的程式則不在我的工作權限之內
    在分層工作的模式裡
    我也只有找到這一條路可以走了

    還是說有什麼方法可以解決???
    2010年3月15日 上午 02:13
  • 那為什麼 Process 會分得更多資源?沒有調優先權,大家平大,那幹嘛要用 Process ?
    論壇是網友平等互助 保證解答請至 微軟技術支援服務
    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。
    2010年3月15日 下午 02:37
  • HI,

    如果CPU有多核, 建議用平行運算的技巧處理, 如果CPU很爛, 用PROCESS比起用THREAD沒有太大的幫助
    • 已標示為解答 Lolota Lee 2010年3月17日 上午 06:55
    2010年3月16日 下午 01:34
  • 平行處理指得是OpenMP嗎????
    2010年3月17日 上午 01:09
  • VS2008可以用OpenMP, VS2010可以用Parallel Pattern Library
    2010年3月17日 上午 03:38