Presentation is loading. Please wait.

Presentation is loading. Please wait.

MultiThread Introduction

Similar presentations


Presentation on theme: "MultiThread Introduction"— Presentation transcript:

1 MultiThread Introduction

2 Win32 function CreateThread Ex:
thread = CreateThread(NULL,0,Threadfun,(LPVOID)param,0,&threadId);

3 Win32 function WaitForMultipleObjects Ex:
WaitForMultipleObjects(c_size ,work_thread,TRUE,INFINITE);

4 Win32 Function CloseHandle Ex: CloseHandle(work_thread[i]);

5 CRT or MFC C Run-Time Library _beginthreadex MFC AfxBeginThread

6 Code for(i=0;i<c_size;i++){ work_thread[i]=CreateThread(NULL,0,calculate,(LPVOID)i,0,&work_threadId[i]); } WaitForMultipleObjects(c_size ,work_thread,TRUE,INFINITE); //all done ,then close CloseHandle(work_thread[i]);

7 Code DWORD WINAPI calculate(LPVOID x) { int i,j,k; int value=0; i = (int)x/C_columSize; j = (int)x%C_columSize; for (k=0; k<A_columSize ; k++){ value += A[i*A_columSize + k] * B[k*B_columSize + j]; } return C[(int)x] =value;

8 Note 考慮 設計 Race condition Deadlock Variable independent Iterative
Load balance

9 Crawler Class Crawler: Class ContextStorage: Class URLManager:
執行整個抓取頁面的邏輯。 Class ContextStorage: 讀取頁面到記憶體並進行相關處理和操作URL如儲存 連結,擷取連結。 Class URLManager: 儲存連結的一個資料結構,確保連結不重複並可回傳 下一連結。(樹狀結構,每一個node儲存某一頁面的所 有連結。另外用MAP儲存所有連結,辨識是否重複。) Class FileManager: 負責將內文依照設定的方式存入硬碟。

10 Crawler

11 Open Multi-Processing API
OpenMP Wiki The OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared memory multiprocessing programming in C/C++ and Fortran on many architectures, including Unix and Microsoft Windows platforms. Ex: #pragma omp parallel { #pragma omp for for(int i = 1; i < size; ++i) x[i] = (y[i-1] + y[i+1])/2; }

12 Site: OpenMP and C++ Reap the Benefits of Multithreading without All the Work [Heresy' Space]: 簡易的程式平行化方法-OpenMP(一) 簡介


Download ppt "MultiThread Introduction"

Similar presentations


Ads by Google