什么叫句柄数?多少是正常的?
作者:山水闲人发布时间:2023-02-14浏览:467
句柄是...一个32位无符号整数,其原始定义好像是unsigned long(记不清了),使Windows用来标识一些系统使用的资源的(例如图标、窗口等等),如果觉得不好理解可以把它当作指针来使,而且事实上大部分时候就是把他当指针使的回复:啥叫句柄?对于初涉Windows编程的兄弟来说,句柄的确是个令人摸不找头脑的概念。指针你应该知道吧,句柄起的作用和指针大体相同,比如用你用API函数建了个窗口,函数返回一个句柄,或者你调用一个API函数,这个函数要求你传入父窗口的句柄。
第一个例子中以后你要放问那个窗口的任何东西,就只有靠这个句柄了,第二个例子也一样,函数需要通过父窗口的句柄进一步访问父窗口的资源,以进行对新建窗口的设置。
哪为什么不返回窗口在内存中的指针呢?让用户直接操作内存是十分危险的,有可能导致难以预料的错误,所以操作系统就在API函数一层隐去了过于接近底层的指针,而代之以32位无符号整数DWORD,它相似于一个索引,由操作系统通过这个索引查到窗口资源在内存中的真实位置进行操作,避免了许多不必要错误的发生。是一个操作系统中线程和资源共享的问题,打个比方吧: 在cpu中某种资源最大是150,有4个线程:a;最大需求是75,当前需求是45,b:50,40, c:40,25,d有两种情况1,d;50,25。2,50,35。用那种方法才能使线程安全呢,看看总的剩余的资源是:v=150-45-40-25=40,先看第一种当前线程是25,那么还有v1=40-25=15的剩余资源,恰好能够用于c线程的剩余部分,而c线程又可以释放出先前25的资源,再看b剩余线程还需要10个资源数,我们就可以满足它,然后再依次地把所有的线程完成。
再看第二种方法,当前线程需要资源35,那么只剩余40-35=5的资源了,不能满足任何一个线程的剩余线程要求的资源数,这就可能导致死锁问题,这个就不能使线程安全了什么叫进程?进程同程序有什么区别?A:进程是程序在计算机上的一次执行活动。当你运行一个程序,你就启动了一个进程。显然,程序是死的(静态的),进程是活的(动态的)。
进程可以分为系统进程和用户进程。凡是用于完成操作系统的各种功能的进程就是系统进程,它们就是处于运行状态下的操作系统本身;用户进程就不必我多讲了吧,所有由你启动的进程都是用户进程。进程是操作系统进行资源分配的单位。
在Windows下,进程又被细化为线程,也就是一个进程下有多个能独立运行的更小的单位。