0
点赞
收藏
分享

微信扫一扫

多线程-1


        进程是应用程序的执行实例,每个进程是由私有虚拟地址空间、代码、数据和其他系统资源组成。进程在运行时创建的资源随着进程的终止而死亡。线程,是一个独立的执行流,是进程内部的一个独立的执行单元,相当于一个子程序,对应于 visual c++ 中 CwinThread类对象。单独一个执行程序运行时,缺省地包含一个主线程,主线程以函数地址的形式出现,提供程序的启动点,如main()和WinMain()等函数。主线程终止时,进程也随之终止。根据实际需要,应用程序可以分解成许多独立执行的线程,每个线程并行的运行在同一个进程中。

        一个进程中的所有线程都在进程的虚拟地址空间中,使用该进程的全局变量和系统资源。操作系统给每个线程分配不同的CPU时间片,在某一个时刻,CPU只执行一个时间片内的线程,多个时间片的相应线程在CPU内轮流执行,由于每个时间片时间很短,所以对用户来说,方法各个线程在计算机中是并行处理的。操作系统是根据线程的优先级来安排CPU时间,优先级高的线程优先运行,优先级低的继续等待。

创建线程的函数:


HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
SIZE_T dwStackSize, // initial stack size
LPTHREAD_START_ROUTINE lpStartAddress, // thread function
LPVOID lpParameter, // thread argument
DWORD dwCreationFlags, // creation option
LPDWORD lpThreadId // thread identifier
);
lpThreadAttributes:是一个指针,NULL使用缺省的安全性

dwStackSize: 初始提交的栈的大小,以字节为单位,系统四舍五入为最近的页面,页面是系统管理内存是的管理单位,0采用和调用线程一样的大小

lpStartAddress:
Pointer to the application-defined function of type
LPTHREAD_START_ROUTINE
to be executed by the thread and represents the starting address of the thread.(线程入口函数地址)
lpParameter:接收参数,给线程传递参数
dwCreationFlags :指定控制线程创建的附加标记,CREATE_SUSPENDED标记被指定,线程创建后处于暂停状态,不会运行,直到调用了ResumeThread函数。如果这个值0,线程创建后立即运行
lpThreadId :作为返回值,线程的标示符,线程ID号

lpStartAddress
[in] Pointer to theapplication-defined function of type LPTHREAD_START_ROUTINE to beexecuted by the thread and represents the starting address of the thread. Formore information on the thread function, see​​ThreadProc​​.
DWORD WINAPI ThreadProc(
LPVOID lpParameter // thread data
);//线程函数



举报

相关推荐

0 条评论