可能兜系統兜慣了有時候被問到很基本的問題,都會變得很不確定
今天大學的同學問我要怎樣一台主機模擬多個主機同時在做事情 然後要分配給不同的系統去做事
我直覺想它應該是想要說執行緒吧,可是他說他會在執行緒使用while loop
他不是很確定是否可以這樣做,我那時候想執行緒應該就是用來解決類似這樣的問題吧?
由於我同學是使用java,因此我就寫了一個小小的程式來測試
ThreadTest.java
public class ThreadTest{
public static void main(String[] args) {
ThreadRun r1 = new ThreadRun();
ThreadRun r2 = new ThreadRun();
Thread t1 = new Thread(r1, "執行緒A");
Thread t2 = new Thread(r2, "執行緒B");
t1.start();
t2.start();
}
}
class ThreadRun implements Runnable{
@Override
public void run() {
String ThreadID;
int i = 1;
while(true){
ThreadID = Thread.currentThread().getName()+"迴圈執行第"+i+"次!!";
System.out.println(ThreadID);
i++;
}
}
}
由於我是寫C/C++的,所以又用C/C++寫個小測試
#include <windows.h>
int _tmain(int argc, _TCHAR* argv[])
{
DWORD ThreadId;
HANDLE Thread;
//啟動多個執行緒
Thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread1, NULL, 0, &ThreadId);
Thread = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)thread2, NULL, 0, &ThreadId);
void thread1()
{
while(true)
printf("執行緒A\n");
}
void thread2()
{
while(true)
printf("執行緒B\n");
}
}
透過以上就能看出執行緒A與B是互相並行執行的,會一起爭取CPU的可用資源
有空再來寫一篇如何用CreateThread帶入多個參數。
Place your comment