/************************************ マルチスレッドプログラムの例. これまでBCC55ではbeginthreadで別スレッドを動かしていたが BCC102+WinMain()で_beginthread→使える BCC102+main()で_beginthread→使えない になっているのでBCC102によるコンソールアプリでは CreateThreadを用いて別スレッドを作る. BCC102のコンパイルオプションは-M *************************************/ #include #include typedef struct { int x; float y; } DataSet; DWORD WINAPI NewThread(LPVOID data) { int counter; DataSet *xydata_in_subthread = (DataSet*) data; while(1){ //構造体をポインタで指定したときは「(*構造体名).要素」とする.(xの方の表記) //ポインタの構造体は「構造体名->要素」と略せる.(yの方の表記) printf("%0.1f\n",((*xydata_in_subthread).x + xydata_in_subthread->y)*counter); counter +=1; Sleep(1000); } return 0; } int main(int argc, char *argv[]) { HANDLE SUBThread; DWORD ThreadID; DataSet xydata; xydata.x=1; xydata.y=0.1; printf("ESCを押すと終了\n"); //スレッドに引数を渡したいときは4個目のパラメータを利用する. //渡せる値は一つなので複数渡す場合は構造体を作って構造体のポインタで渡す. //(渡さなければNULLで良い.) SUBThread = CreateThread(NULL, 0, &NewThread, &xydata, 0, &ThreadID); while(!(GetKeyState(VK_ESCAPE)& 0x8000)){} //スレッドを終了させる. CloseHandle(SUBThread); return 0; }