#include <windows.h> #include <stdio.h> //线程函数 DWORD WINAPI ThreadProc(LPVOID lpParam) { int i = 0; while(i < 20) { printf("I am from a thread,count = %d\n",i ); } return 0; } int main(int argc, char* argv[]) { HANDLE hThread; DWORD dwThreadId; //创建一个新线程 hThread = CreateThread( NULL, //默认安全属性 NULL, //默认堆栈大小 ThreadProc, //线程入口地址(执行线程的函数) NULL, //传给函数的参数 0, //指定线程立即执行 &dwThreadId //返回线程的ID号 ); printf("Now another thread has been Created,ID:%d\n",dwThreadId); //等待新线程运行结束 WaitForSingleObject(hThread,INFINITE); //INFINITE表示等待无限长,单位为毫秒 CloseHandle(hThread); return 0; } ----------------------------------------------------------------------------------------------------------------------- #include <windows.h> #include <string.h> #include <stdio.h> int main(int argc, char* argv[]) { char szCommandLine[] = "cmd"; STARTUPINFO si = {sizeof(si)}; BOOL bRet; PROCESS_INFORMATION pi; //指定显示ShowWindows有效 si.dwFlags = STARTF_USESHOWWINDOW; si.wShowWindow = TRUE; bRet = CreateProcess( NULL, //不在此指定可执行文档的文档名 szCommandLine, //命令行参数 NULL, //默认进程安全性 NULL, //默认线程安全性 FALSE, //当前进程内的句柄不能够被子进程继承 CREATE_NEW_CONSOLE, //为新进程创建一个新的控制台窗口 NULL, //使用本进程的环境变量 NULL, //使用本进程的驱动器和目录 &si, //父进程传给子进程的一些信息 &pi); //保存新进程信息的结构 if(bRet) { //不使用两个句柄,最好立即关闭 CloseHandle(pi.hThread); CloseHandle(pi.hProcess); printf("新进程的进程ID号是:%d\n",pi.dwProcessId); printf("新进程的主线程ID号是:%d\n",pi.dwThreadId); } return 0; } --------------------------------------------------------------------------------------------------- C/C 中的多线程入门源码 作者: 贺忆东 一个很简单的多线程程式,主要用于了解临界区的使用 #include #include #include #pragma comment(lib,"libcmt.lib") const int NLOOP = 100; int counter = 0; void doit(void*); CRITICAL_SECTION beswap ; int main() { HANDLE pnt[2]; InitializeCriticalSection(&beswap); pnt[0] = (HANDLE)_beginthread(doit,0,NULL); pnt[1] = (HANDLE)_beginthread(doit,0,NULL); WaitForMultipleObjects( 2, pnt, TRUE, 1000L); DeleteCriticalSection(&beswap); return 0; } void doit(void*) { printf("go...\n"); int i, val = 0; for(i = 0; i < NLOOP; i) { EnterCriticalSection(&beswap); val = counter; printf("%d\n",val 1); counter = val 1; LeaveCriticalSection(&beswap); } printf("end...\n"); return ; }
C创建新线程的源码
最新推荐文章于 2021-06-27 21:46:01 发布