`
mbgodi
  • 浏览: 22870 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

多线程编程(一)――CreateThread

 
阅读更多

多线程编程(一)――CreateThread
2010年07月27日
  操作系统提供的SDK API CreateThread原型如下: lpThreadAttributes: 指向SECURITY_ATTRIBUTES型态的结构的指针。在Windows 98中忽略该参数。在Windows NT中,设为NULL,表示使用缺省值。  dwStackSize: 线程堆栈大小,一般为0,在任何情况下,Windows根据需要动态延长堆栈的大小。可以使用链接器的/STACK: [reserve ] [,commit] 来控制。                         reserve设置系统为线程栈预留多少地址空间,默认为1M;commit表示最初为栈预料的地址空间调拨多少物理内存空间,默认是1个页面。
  lpStartAddress: 指向线程函数的指针,形式:@函数名,函数名称没有限制,但是必须以下列形式声明: 
  DWORD WINAPI ThreadProc (LPVOID pParam) ,格式不正确将无法调用成功。 
  lpParameter :向线程函数传递的参数,是一个指向结构的指针,不需传递参数时,为NULL。 
  dwCreationFlags :如果设置为CREATE_SUSPENDED,线程创建后被挂起,只有当你调用ResumeThread 的时候它才继续进行。
  如果设置为0的话,在线程创建后立即执行。                                如果设置为STACK_SIZE_PARAM_IS_A_RESERVATION ,则使用dwStackSize 标记中的reserve,否则的话是commit。                                在Windows 2000/NT and Windows Me/98/95下 STACK_SIZE_PARAM_IS_A_RESERVATION 无效.
  lpThreadId :保存新线程的id。 
  函数返回值: 若函数成功,返回线程句柄;函数失败返回FALSE。
  下面举例说明:
  SDKThreading.h #ifndef MULTITHREAD #define MULTITHREAD class DrawPicture { public: static DWORD WINAPI MyThreadFunc(LPVOID lpParam ); void Draw(); private: static int nPoint; }; #endif SDKThreading.cpp #include  #include  #include "SDKThreading.h" using namespace std; int DrawPicture::nPoint = 20; DWORD WINAPI DrawPicture::MyThreadFunc( LPVOID lpParam ) { while(nPoint > 0) { coutDraw(); delete pDraw; system("pause"); return 0; }  对于线程的终止,大体有如下4种:
  1.线程函数的返回,这种方式强烈建议使用。
  2.线程自己调用ExitThread函数自杀(
分享到:
评论

相关推荐

    多线程实例(MFC)VS2010版本

    该例程是针对MFC的多线程编程,具体的code介绍见博客地址:http://blog.csdn.net/u013896064 window线程编程

    Window下多线程编程、Linux下多线程编程-多线程实验bistu

    Windows实验一:基于CreateThread设计实现多线程程序 Windows实验二:基于beginthread设计实现多线程程序 Windows实验三:基于beginthread设计多线程字符串查找程序 Linux实验一:基于pthread_create设计实现多线程...

    VBA多线程编程

    1个exceL VBA环境下进行多线程编程的好例子

    Visual C++ 多线程编程

    Visual C++ 多线程编程,CreateThread,CreateMutex,WaitForSingleObject等函数的应用

    多线程编程示例源代码

    多线程编程示例代码,包含CreateThread _beginthread AFXbeginThread 3个API的示例

    c++多线程编程初探

    c++多线程编程初探 HANDLE thread1; HANDLE thread2; thread1=CreateThread(NULL,0,Fun1,NULL,0,NULL); thread2=CreateThread(NULL,0,Fun2,NULL,0,NULL);

    Delphi多线程教程

    Delphi中有一个线程类TThread是用来实现多线程编程的,这个绝大多数Delphi书藉都有说到,但基本上都是对TThread类的几个成员作一简单介绍,再说明一下Execute的实现和Synchronize的用法就完了。然而这并不是多线程编...

    多线程编程

    createthread(),closehandle()多线程开发,充分利用CPU,实现编程之最

    在BCB中使用多线程 ( 转载 )_BladeW的博客-CSDN博客1

    一、初识TThread对象VCL提供了用于多线程编程的TThread类,在这个类中封装了Windows关于线程机制的Windows API,通常将它的实例成为线

    C++多线程编程简单实例

    C++本身并没有提供任何多线程机制,但是在windows下,我们可以调用SDK win32 api来编写多线程的程序,下面就此简单的讲一下: 创建线程的函数 代码如下: HANDLE CreateThread(  LPSECURITY_ATTRIBUTES ...

    _beginthreadex与CreateThread区别

    并深入分析CreateThread与_beginthreadex的本质区别,相信阅读本文后你能轻松的使用多线程并能流畅准确的回答CreateThread与_beginthreadex到底有什么区别,在实际的编程中到底应该使用CreateThread还是_...

    c语言socket多线程编程限制客户端连接数

    先上一些多线程需要使用的函数定义: 代码如下:DWORD WINAPI ProcessClientRequests(LPVOID lpParam) //新线程将会执行的函数定义{ return 0;} HANDLE handler=CreateThread(NULL, 0, ProcessClientRequests, &...

    线程同步问题:生产者消费者

    通过互斥量、事件来解决生产者和消费者的问题,主要涉及的内容有多线程的创建,事件的创建,互斥量的创建,线程的同步。主要的函数有:CreateThread,CreateEvent,CreateMutex,WaitForMultipleObjects等。

    《C++编程艺术》教程+代码

    3.6 一个多线程的垃圾回收器 78 3.6.1 附加的成员变量 79 3.6.2 多线程的GCPtr构造函数 79 3.6.3 TimeOutExc异常 81 3.6.4 多线程的GCPtr析构函数 81 3.6.5 gc()函数 82 3.6.6 isRunning()函数 82 3.6.7 gclist的...

    春节好看的基于c语言程序编写的烟花绽放消失源代码

    畅,程序还包括了多线程相关函数,如 CreateThread 、Sleep 等。 此程序的编写不仅仅是一次有趣的娱乐,同时也具有指导意义, 可以帮助初学编程的人更好地了解 Win32 API 图形和多线程的相关知 识,和加强程序员对于...

    《临界区的互斥控制》配套VC源代码

    所以那我就写了这么一个例子,以望对学习多线程编程起到引玉抛砖的作用。有个易懂的例子学起来总是容易很多。近来我正在复习那几个排序算法,于是就把这些算法写到了这里来作为线程的例子。同时也对几个通用的排序...

    操作系统课程设计(生产者-消费者,存储管理,虚拟存储器

    2.了解Windows 2000/XP中多线程的并发执行机制,线程间的同步和互斥。 3.学习使用Windows 2000/XP中基本的同步对象,掌握相应的API。 三、实验要求 1.生产者消费者对缓冲区进行互斥操作。 2.缓冲区大小为10,缓冲区...

    《操作系统实训》指导书

    //多线程 int IsStop=tStop(); if(IsStop==0) //满足停止条件 { CloseHandle(ahThread); CloseHandle(bhThread); CloseHandle(hThread); } } void shengcanzexiaofeize() //主函数 { printf("**********会...

    mfc教程(word版)

    1.1 MFC是一个编程框架 1 1.1.1 封装 1 1.1.2 继承 2 1.1.3 虚拟函数和动态约束 2 1.1.4 MFC的宏观框架体系 2 1.2 MDI应用程序的构成 3 1.2.1 构成应用程序的对象 3 1.2.2 构成应用程序的对象之间的关系 5 1.2.3 ...

    MFC-李进九 电子书籍完整版

    1.1 MFC是一个编程框架 1 1.1.1 封装 1 1.1.2 继承 2 1.1.3 虚拟函数和动态约束 2 1.1.4 MFC的宏观框架体系 2 1.2 MDI应用程序的构成 3 1.2.1 构成应用程序的对象 3 1.2.2 构成应用程序的对象之间的关系 5 1.2.3 ...

Global site tag (gtag.js) - Google Analytics