有哪些是支援多核心的程式設計軟體?

小弟不才
想詢問各位大大
有哪些是支援多核心的程式設計軟體?
VB有嗎
C++有嗎
JAVA有嗎
還是有別的設計軟體
重點在Compiler跟語言 像Java在執行的時候只能允許單緒 那當然再多核都一樣 還是只能用單核
再來就是撰寫的時候注意寫成多緒 Compiler在Compile的時候還有OS在執行的時候自然會把剩下的處理掉
跟IDE是什麼沒太大的影響
松鼠 松鼠 搖一搖尾巴 兔兔 兔兔 拉一拉尾巴
Java只能用Single Thread來跑?
真不知道是哪一國的Java啊,不懂也裝懂
Java Multithread Design Pattern-Java多執行緒與平行處理 / 博碩文化

那這本書應該是寫錯了吧?!

J2SE 1.5之後,就開始支援多執行緒了,所以多核CPU也有發揮的空間!!!

特權,充斥在整個社會裡面不要把聖物給狗,也不要把珍珠丟在豬前,恐怕他踐踏了珍珠,又轉過來咬你…
2樓的大大說得沒錯阿....=.=
只要單緒改單核就可以了...orz 不知道是不是筆誤
Thread 針對單核只是時間排程而已阿.....也只是個名稱而已啦

雙核的程式阿....不知道耶....網路找看看吧 :)




這是回家作業嗎?

只要能寫 Multiple thread 的程式語言,就都可以透過 OS 獲得多顆 CPU 的執行好處了
大概近代流行的語言都有吧, C++, Java, Python, .NET 家族, balabala

如果,你是要針對多顆 CPU 最佳化的,包含資料結構, 還有 memory 的使用...,
那請上網找 "parallel computing"
另外推一個 open source project 叫 Thread Building Block http://www.threadingbuildingblocks.org/
這個是 intel 搞的 open source project
針對現在越來越多的多核 CPU 或多 CPU電腦所寫的一套 threading library
除了跨平台外,他還提供了包含平行處理需要的一些特別的資料結構...
有興趣的話就找書來看吧
這是回家作業嗎?

只要能寫 Multiple thread 的程式語言,就都可以透過 OS 獲得多顆 CPU 的執行好處了
大概近代流行的語言都有吧, C++, Java, Python, .NET 家族, balabala

如果,你是要針對多顆 CPU 最佳化的,包含資料結構, 還有 memory 的使用...,
那請上網找 "parallel computing"
另外推一個 open source project 叫 Thread Building Block http://www.threadingbuildingblocks.org/
這個是 intel 搞的 open source project
針對現在越來越多的多核 CPU 或多 CPU電腦所寫的一套 threading library
除了跨平台外,他還提供了包含平行處理需要的一些特別的資料結構...
有興趣的話就找書來看吧
lan1234tw wrote:
Java只能用Sin...(恕刪)


至少在Win32上的JVM是Many-to-One的架構
上層的User Thread再多 到了JVM要Run的時候 也只能一次跑一個Kernel Thread

真的要發揮多核的好處要能Many-to-Many
目前只有Solaris上的JVM允許Many-to-Many

(所以上面才會有先進說Java只支援單核)
松鼠 松鼠 搖一搖尾巴 兔兔 兔兔 拉一拉尾巴
kaorujan wrote:
至少在Win32上的...(恕刪)


我想這點也是有點值得商榷的
像我在Windows XP上啟動OpenProj, 這是一個Pure Java的應用程式,你可以看到系統的兩顆CPU都有被使用到,我想起碼1.6(也就是6.0)的JVM跟WindowsXP會把工作分配給兩顆CPU去處理,並非全部都擠在一起給單顆CPU,所以現在的多執行緒,應該不會只有在Solaris下才能享受才是。


特權,充斥在整個社會裡面不要把聖物給狗,也不要把珍珠丟在豬前,恐怕他踐踏了珍珠,又轉過來咬你…
目前多核心軟體上的"問題"著眼點並非在multi threading(多執行序)上
如果說運用了multi threading去設計軟體就是利用多核心那只是這個問題的表面.
畢竟在單一 thread裡的程式碼還是只能用一個核心.
舉例來說,通常我們常寫迴圈處理程序:
for (int i=0;i<1000;i++)
{
do something ... (指令1)
do something ... (指令2)
}
假設你有顆雙核心的CPU.
就這個迴圈而言,要循序執行指令1,指令2,1萬次.且每一個指令在執行時只能使用一個核心.
假設每個指令要花費1秒,那總共要花費2萬秒才能完成整個工作.

以修改程式碼來達成支援雙核心:
大約可以改寫成變成:
main ()
{
CALL THREAD1 (looping1); <--啟動第一個執行序 (使用一個核心)
CALL THREAD2 (looping2); <--啟動第二個執行序 (使用一個核心)
Wait_jobs_Finished (); <--等所有的執行序處理完
}

looping1 ()
{
for (int i=0;i<5000;i++)
{
do something ... (指令1)
do something ... (指令2)
}
}
looping2 ()
{
for (int i=5001;i<10000;i++)
{
do something ... (指令1)
do something ... (指令2)
}
}
這樣的修改理論上可以提昇效能,節省接近一倍的時間 (實際上還要一些同步等待等等成本時間)
但這並不是理想中的形式,而且會增加大量的軟體開發成本.
多核心解決方案主要就是要在"不用修改程式碼"的情況下,達到接近 (2萬秒/核心數)的效能.
個人覺得新一代的作業系統必定會就此方向去做改良(不過還有得等)!!









關閉廣告
文章分享
評分
評分
複製連結

今日熱門文章 網友點擊推薦!