windows核心编程---线程的创建

来源:网络 责任编辑:栏目编辑 发表时间:2013-07-01 03:23 点击:

在windows核心编程中提交,进程只是作为线程的容器,并为线程的执行提供空间,他本身并不做什么操作。

WINODWS系统提供了如下的API用于创建线程。

1
HANDLE CreateThread(
2
  LPSECURITY_ATTRIBUTES lpThreadAttributes,  // pointer to security attributes
3
  DWORD dwStackSize,                         // initial thread stack size
4
  LPTHREAD_START_ROUTINE lpStartAddress,     // pointer to thread function
5
  LPVOID lpParameter,                        // argument for new thread
6
  DWORD dwCreationFlags,                     // creation flags
7
  LPDWORD lpThreadId                         // pointer to receive thread ID
8
);
但是一般开发者并不会用这个API去创建线程,而是用_beginthreadex这个函数,如果用MFC,可以使用AfxBeginThread去创建一个线程。

 

创建线程的过程如下:

 

 

线程内核对象创建完成后,开始分配线程的堆栈内存,该空间从进程的空间中分配得来,所以线程并没有自己独立的内存空间。系统会将pvParam和pfnStartAddrj写入线程的堆栈。

每个线程都有它自己的一组C P U寄存器,即线程的上下文。该上下文反映了线程上次运行时该线程的C P U寄存器的状态。线程的这组C P U寄存器保存在一个C O N T E X T结构(在Wi n N T. h头文件中作了定义)中。C O N T E X T结构本身则包含在线程的内核对象中,当该线程再次被调度时,通过读取上下文,即可以将线程继续执行下去。

 

上一个简单的例子,怎么去创建一个windows线程。


01
#include <stdio.h>
02
#include <string>           
03
#include <windows.h>       
04
#include <process.h>        
05
#include <iostream>
06
using namespace std;
07
 
08
 
09
class ThreadX
10
{
11
private:
12
  int loopStart;
13
  int loopEnd;
14
  int dispFrequency;
15
 
16
public:
17
  string threadName;
18
 
19
  ThreadX( int startValue, int endValue, int frequency )
20
  {
21
    loopStart = startValue;
22
    loopEnd = endValue;
23
    dispFrequency = frequency;
24
  }
25
 
26
  static unsigned __stdcall ThreadStaticEntryPoint(void * pThis)
27
  {
28
      ThreadX * pthX = (ThreadX*)pThis; 
29
 
30
      printf("loopStart : %d, loopEnd : %d,  dispFrequency: %d\n", pthX->loopStart,
31
                                                                                    &nb

    相关新闻>>

      发表评论
      请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
      用户名: 验证码:点击我更换图片
      最新评论 更多>>

      推荐热点

      • dos命令原来也能这样用?允许查找未知子目录指定文件
      •  windows的磁盘操作之八——格式化分区的思考
      • windows篇-第三章 安装和配置DNS服务器
      • windows篇-第二章 安装和配置Web服务器
      • windows篇-第一章 windows server 2008安装和简单配置
      •  windows server 2003断开远程之后自动注销用户
      • Windows服务器下用IIS Rewrite组件为IIS设置伪静态方法
      • Windows 2008 R2 SP1部署WSUS 3.0 SP2
      • windows 2008 rodc扩展

      快速直达

      操作系统导航

      LinuxWindows虚拟机
      网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
      Copyright © 2008-2015 计算机技术学习交流网. 版权所有

      豫ICP备11007008号-1