C创建新线程的源码

原创 2006年06月13日 20:52:00
#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 ;
}

【多线程-创建新线程】

一.创建无参数的入口线程:new Thread(new ThreadStart(GetShow)); static void Main(string[] args) {...
  • heyangyi_19940703
  • heyangyi_19940703
  • 2016年05月12日 15:33
  • 629

C-socket编-线程池

#include #include #include #include #include #include #include #include /*#include "threadpo...
  • wwzhang0307
  • wwzhang0307
  • 2017年04月17日 17:53
  • 198

用C创建新线程的源码

#include #include //线程函数DWORD WINAPI ThreadProc(LPVOID lpParam){ int i = 0; while(i  {  printf("I am...
  • kgdiwss
  • kgdiwss
  • 2005年07月06日 23:46
  • 1158

多线程——创建新线程

一,简单单线程             线程是代码的执行序列或者执行路径。线程与进程的概念有一些类似,它类似于一个轻量级的进程;一个操作系统可以运行多个进程,一个进程内可以运行多个线程。每个应用...
  • lhc2207221755
  • lhc2207221755
  • 2015年01月17日 21:29
  • 1659

c++ 多线程编程之创建新线程

c++语言本身没有提供多线程机制,
  • qq981932962
  • qq981932962
  • 2014年09月25日 21:54
  • 2109

Android线程—Timer类(二)

本篇讲解如何使新创建的Timer为守护线程。先看一下API中提供的一个方法。 对 Timer 对象最后的引用完成后,并且 所有未处理的任务都已执行完成后,计时器的任务执行线程会正常终止(并且...
  • weixin_37730482
  • weixin_37730482
  • 2017年06月05日 09:27
  • 93

GCD是否创建线程总结

同步函数不具备开启线程的能力,无论是什么队列都不会开启线程;异步函数具备开启线程的能力,开启几条线程由队列决定(串行队列只会开启一条新的线程,并发队列会开启多条线程)...
  • andy_jiangbin
  • andy_jiangbin
  • 2016年09月05日 12:28
  • 290

用C创建新进程的源码

#include #include #include int main(int argc, char* argv[]){ char szCommandLine[] = "cmd"; STARTUPIN...
  • kgdiwss
  • kgdiwss
  • 2005年07月06日 23:44
  • 2851

Android 快速创建一个新的线程

直接创建子线程并启动 Thread thread=new Thread(){ @Override public void run() { //这里写入子线程需要做的工作 }...
  • u013290075
  • u013290075
  • 2015年11月17日 21:52
  • 512

C++下多线程的创建

在C语言下面,创建多线程不是很复杂,直接调用win32的CreateThread函数就可以了。但是怎么用C++创建多线程确实是一个问题。一方面,创建线程中的函数指针不能是成员函数,一方面我们希望可以把...
  • yaoxinchao
  • yaoxinchao
  • 2012年10月18日 21:04
  • 2521
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C创建新线程的源码
举报原因:
原因补充:

(最多只允许输入30个字)