#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 ;
}
分享到:
相关推荐
易语言源码易语言创建远程线程源码.rar
易语言源码创建类线程源码.rar
易语言创建类线程源码.zip易语言项目例子源码下载易语言创建类线程源码.zip易语言项目例子源码下载 1.合个人学习技术做项目参考 2.适合学生做毕业设计参考 3.适合小团队开发项目参考
易语言源码易语言类方法创建线程源码.rar 易语言源码易语言类方法创建线程源码.rar 易语言源码易语言类方法创建线程源码.rar 易语言源码易语言类方法创建线程源码.rar 易语言源码易语言类方法创建线程源码.rar ...
Java+创建线程的例子源码整理
C# winform 动态创建和 关闭多线程,基于VS2010的完整解决方案。 可运行
类成员函数创建线程
易语言创建远程线程源码,创建远程线程,CALL,GetProcessID,OpenProcess,VirtualAllocEx,WriteProcessMemoryByte,CreateRemoteThread,WaitForSingleObject,CreateToolhelp32Snapshot,Process32Next,Process32First,...
易语言类方法创建线程源码。@易语言在线学习。
易语言创建类线程源码,创建类线程,GetThis,启动类线程,关闭类线程,线程_测试,其他_附加文本,取_类_函数地址,取指针内容_整数,取变量地址_整数,刷新对象数
摘要:Delphi源码,其它类别,创建线程,API 这是一个Delphi使用API来创建多线程应用程序的示例。IsDone变量的引入,是为了避免控制台应用的主线程执行结束时,进程中止导致新创建线程中止。——这甚至可能发生在新...
易语言创建线程源码,创建线程,创建扩展线程_,关闭内核对象_,创建线程_
易语言类方法创建线程源码,类方法创建线程,ddd,取当前类指针,取方法指针,创建线程,线程接口,创建循环线程,关闭循环线程,取循环线程空闲索引,循环线程接口,线程_创建线程,线程_等待执行完毕,线程_线程结束,操作_取...
多线程操作实例源码 Windows是一个多任务的系统,如果你使用的是windows 2000及其以上版本,你可以通过任务管理器查看当前系统运行的程序和进程。什么是进程呢?当一个程序开始运行时,它就是一个进程,进程所指...
易语言创建远程线程源码
C#创建线程与循环的例子,此为演示代码,创建新线程,并创建ThreadStart委托对象,消息传输方法AddMsg,在方法中使用循环实现传输功能,在循环中创建线程,在循环中创建并使用线程,传输一行,并将该行删除,点击...