本文目录一览:
- 1、请教关于windows下C语言线程的问题,就是如何处理一个服务器接收多个客户机发送的信息
- 2、解析windows线程调度策略
- 3、怎么关闭占了端口的线程windows
- 4、在windows处理器调度的过程中,线程的哪些状态可以转换到就绪状态
- 5、如何关闭win10电脑的超线程?
请教关于windows下C语言线程的问题,就是如何处理一个服务器接收多个客户机发送的信息
2 线程的使用
2.1 定义线程处理函数
DWORD WINAPI ThreadProc(
LPVOID lpParameter
//创建线程时,传递给线程的参数
);
2.2 创建线程
HANDLE CreateThread(
LPSECURITY_ATTRIBUTES lpThreadAttributes,
//安全属性
SIZE_T dwStackSize,
//线程栈的大小
LPTHREAD_START_ROUTINE lpStartAddress,
//线程处理函数的函数地址
LPVOID lpParameter,
//传递给线程处理函数的参数
DWORD dwCreationFlags,
//线程的创建方式,
LPDWORD lpThreadId
//创建成功,返回线程的ID
); 创建成功,返回线程句柄
dwCreationFlags:
0 - 创建之后线程立刻执行
CREATE_SUSPENDED - 创建之后线程处于挂起状态。
2.3 结束线程
结束指定线程
BOOL TerminateThread(
HANDLE hThread, // handle to thread
DWORD dwExitCode // exit code
);
结束函数所在的线程
VOID ExitThread(
DWORD dwExitCode // exit code for this thread
);
2.4 关闭线程句柄
CloseHandle
LZ用fork()那不是多线程,是多进程了,你这个不需要多进程的,多线程就可以可以了,原理和linux一样只是函数名改一改就可以了,
解析windows线程调度策略
1.主动切换
一个线程可能因为进入等待状态而主动放弃处理器的使用,此时Windows 2000/XP将选杼一个新线程开始运行。许多WIN32等待函数调用(如WaitForSingkObject或WaitFor-MultipkObjects等)都使线程等待某个对象,等待的对象可能有事件、互斥信号量、资源信号M、I/O操作、进程、线程、窗口消息等。如果进入等待线程的时间配额有剩余,在等待事件出现时,线程的时间配额被减1,相当于1/3个时钟间隔;如果线程的优先级大于等于14,在等待事件出现时,线程的优先级被重置。-windows结束线程结束
2.抢先
当一个高优先级线程的等待完成,即一个线程等待的事件出现,高优先级线程进入就绪状态,或者一个线程的优先级被增加或减少,出现正在处于运行状态的低优先级线程低于就绪队列中的某个线程时,系统都要确定是否让当前线程继续运行或当前线程是否要被一个高优先级线程抢先。在Windows 2000/XP中的用户态下运行的线程也可以抢先内核态下运行的线程。在判断一个线程是否被抢先时,并不考虑线程处于用户态还是内核态,调度器只是依据线程优先级进行判断。-windows结束线程结束
当线程被抢先时,它被放回相应优先级的就绪队列的队首。处于实时优先级的线程在被抢先时,时间配额被重置为一个完整的时间片;而处于动态优先级的线程在被抢先时,时间配额不变,重新得到处理器使用权后将运行到剩余的时间配额用完。-windows结束线程结束
3.时间配额用完
当一个处于运行状态的线程用完它的`时间配额时,Windows 2000/XP首先必须确定是否需要降低该线程的优先级,然后确定是否需要调度另一个线程进入运行状态。
如果刚用完时间配额的线程的优先级被降低了,Windows 2000/XP将寻找一个更适合的线程进入运行状态,所谓更适合的线程是指优先级高于刚用完时间配额的线程的新设S值的就绪线程。如果刚用完时间配额的线程的优先级没有降低,并且有其他优先级相同的就绪线程,Windows 2000/XP将选杼相同优先级的就绪队列中的下一个线程进入运行状态,刚用完时间配额的线程被排到就绪队列的队尾(即分配一个新的时间配额并把线程状态从运行状态改为就绪状态如果没有优先级相同的就绪线程可运行,刚用完时间配额的线程将得到一个新的时间配额并继续运行。-windows结束线程结束
4.线程运行结束
当线程完成运行时,它的状态从运行状态转到终止状态。此时系统将处理器调度给另一个线程。线程完成运行的原因可能是通过调用ExhThread而从主函数中返回或被其他线程通过调用TerminateThread来终止。如果处于终止状态的线程对象上没有未关闭的句柄,则该线程将被从进程的线程列表中删除,相关数据结构将被释放。-windows结束线程结束
怎么关闭占了端口的线程windows
在开始-运行,输入CMD打开命令行界面,输入命令
netstat -ano | findstr "80" (注80是你想要看查看的端口号)
就会输出包含80端口使用的情况
具体对应的行是
协议 本地地址 外部地址 状态 PID
2
如果想看某个进程具体是哪个进程可以使用下面命令
tasklist | findstr "5584"(注 5584是进程的id即PID)
在windows处理器调度的过程中,线程的哪些状态可以转换到就绪状态
一个程序中可以有多条执行线索同时执行,一个线程就是程序中的一条执行线索,每个线程上都关联有要执行的代码,即可以有多段程序代码同时运行,每个程序至少都有一个线程,即main方法执行的那个线程。如果只是一个cpu,它怎么能够同时执行多段程序呢?这是从宏观上来看的,cpu一会执行a线索,一会执行b线索,切换时间很快,给人的感觉是a,b在同时执行,好比大家在同一个办公室上网,只有一条链接到外部网线,其实,这条网线一会为a传数据,一会为b传数据,由于切换时间很短暂,所以,大家感觉都在同时上网。 状态:就绪,运行,synchronize阻塞,wait和sleep挂起,结束。wait必须在synchronized内部调用。 调用线程的start方法后线程进入就绪状态,线程调度系统将就绪状态的线程转为运行状态,遇到synchronized语句时,由运行状态转为阻塞,当synchronized获得锁后,由阻塞转为运行,在这种情况可以调用wait方法转为挂起状态,当线程关联的代码执行完后,线程变为结束状态。-windows结束线程结束
如何关闭win10电脑的超线程?
1、在电脑上打开开始菜单,找到系统配置选项,并点击打开。
2、在跳转的界面中,点击上方的引导选项。
3、在打开的引导界面中,找到高级选项,并点击打开。
4、在打开的高级选项中,找到处理器个数,并选择为一个。
5、设置完成后,点击下方的确定选项即可完成设置。