线程优先级相同的情况,cpu可以运行一个线程大约20ms。而在系统中的线程有不同的优先级,这将影响调度程序如何选择下一个可调度线程,系统分配cpu时,会先分配给优先级高的线程。但是高优先级的不一定是可调度状态,所以低有先级的也会执行到
系统默认优先级别为0
.版本 2 .DLL命令 GetCurrentThreadId, 整数型, "kernel32.dll", "GetCurrentThreadId", , 获取当前线程一个唯一的线程标识符 .DLL命令 Sleep_, 整数型, "kernel32.dll", "Sleep", , 用于将运行中的程序暂停(毫秒) .参数 dwMilliseconds, 整数型, , 要暂停的时间(毫秒),若设为 INFINITE 那么就一直等待 .DLL命令 WaitForMultipleObjects, 整数型, "kernel32.dll", "WaitForMultipleObjects", , 监测一个对象的状态,如事件对象,线程,进程 .参数 nCount, 整数型, , 对象句柄的数量 .参数 lpHandle, 整数型, , 指向一组句柄的变量 .参数 bWaitAll, 逻辑型, , 如果指定为TRUE,函数仅在所有对象的状态都变成 置位 时才返回 如果指定FALSE ,任意一个对象的状态变成 置位 时都返回 .参数 dwMilliseconds, 整数型, , 指定以ms为单位的超时时间 .DLL命令 WaitForSingleObject, 整数型, "kernel32.dll", "WaitForSingleObject", , 监测一个对象的状态,如果对象是置位状态表示就继续运行此函数下面的程序,如果是复位状态,就让下面的程序进入等待状态. 如事件对象,线程,进程 .参数 hHandle, 整数型, , 指定为等待的对象句柄(一般就是用 CreateEvent 创建的事件句柄) .参数 dwMilliseconds, 整数型, , 指定以ms为单位的超时时间0为立即返回或INFINITE(-1)无限等待 .DLL命令 GetThreadPriority, 整数型, "kernel32", "GetThreadPriority", , 获取线程的优先级 .参数 hThread, 整数型, , 0 .DLL命令 ResumeThread, 整数型, "kernel32.dll", "ResumeThread", , 启动被挂起的线程,当计数值减到0的时候,线程被恢复运行.成功则返回原来的暂停计数值,-1表示失败。 .参数 hThread, 整数型, , 要启动的线程 .DLL命令 SetThreadPriority, 逻辑型, "kernel32", "SetThreadPriority", , 设置线程的优先级,成功返回非0,失败返回0 .参数 hThread, 整数型, , 0 .参数 nPriority, 整数型, , 0 .DLL命令 CreateThread, 整数型, "kernel32.dll", "CreateThread", , 创建一个新的线程,创建完毕会立即返回。成功则返回新线程的句柄,零表示失败 .参数 lpThreadAttributes, 整数型, , 指向一个SECURITY_ATTRIBUTES结构,主要用来指定句柄是否可以被继承,如果让线程使用默认的安全属性,可以将此值设为 NULL .参数 dwStackSize, 整数型, , 线程堆栈大小,如果为0,那么线程的堆栈大小和主线程使用的大小相同 .参数 lpStartAddress, 子程序指针, , 线程的开始执行地址,指向一个新线程函数(过程)的指针 .参数 lpParameter, 整数型, , 传递给自定义参数,传递给子线程的参数,0为无限止 .参数 dwCreationFlags, 整数型, , 设置线程被创建后的状态,如果为0表示,创建后立即运行,如果为CREATE_SUSPENDED(4)标志,表示线程被创建后处于挂志状态,直到使用ResumeThread函数显式地启动线程为止 .参数 lpThreadId, 整数型, 传址, 指向一个双字节变量,用来接收函数返回的线程ID.线程ID在系统范围内是唯一的.
.版本 2 .支持库 spec .程序集 程序集1 .子程序 _启动子程序, 整数型, , 本子程序在程序启动后最先执行 .局部变量 hThread1, 整数型 .局部变量 hThread2, 整数型 .局部变量 id1, 整数型 .局部变量 id2, 整数型 hThread1 = CreateThread (0, 0, &fun_thread, 1, 0, id1) ' 第5个参数为0 ,创建线程后立即执行, hThread2 = CreateThread (0, 0, &fun_thread, 2, 4, id2) ' 第5个参数为4,创建线程后挂起等待恢复 调试输出 (SetThreadPriority (hThread1, 15)) ' 线程优先级高的先执行完成 调试输出 (SetThreadPriority (hThread2, 2)) 调试输出 (GetThreadPriority (hThread1)) 调试输出 (GetThreadPriority (hThread2)) ResumeThread (hThread2) ' 恢复第二条挂起的线程 WaitForSingleObject (hThread1, -1) WaitForSingleObject (hThread2, -1) 调试输出 (“finished!!!”) 返回 (0) ' 可以根据您的需要返回任意数值 .子程序 fun_thread .参数 par, 整数型 .局部变量 i, 整数型 .计次循环首 (500, i) 输出调试文本 (到文本 (par) + “|” + 到文本 (i)) .计次循环尾 ()