LockResource的作用是什么?

时间:2021-08-08 16:05:45
资源被载入然后锁定它,这里的锁定起什么作用?如果不锁定它会怎么样

10 个解决方案

#1


你在使用这个资源过程中,资源让修改了怎么办?

#2


锁定资源并得到资源在内存中的第一个字节的指针

#3


资源锁定的目的都是为了防止被别的程序修改。

#4


锁是一种约定,只有大家都遵守这个约定才有效。
表示如果在执行某个操作是否会影响当前操作,如果影响,那就等待或者想其他办法解决,呵呵。

#5


简单地讲,LockResource是返回资源的指针,以便读取资源数据。

所谓Lock,是将数据在内存中锁定,因为其数据原本是在文件里,必须读到内存中才能被程序使用,不是怕被修改。要想理解清楚这个问题,需要了解内存映射的概念。

#6


。。。多线程问题。一个资源,2个或多个线程在使用,必须加锁,保证在某一个时刻只有一个线程能够占有这个资源,直到这个线程把锁放掉

#7


to cnzdgs:
    HRSRC hrsrc = FindResource(NULL, lpszResName, RT_DIALOG); 
    HGLOBAL hglb = LoadResource(g_hinst, hrsrc); 
    return (DLGTEMPLATE *) LockResource(hglb); 

读到内存的操作已经有LoadResource函数操作了

#8


LoadResource与LoadBitmap、LoadIcon等不同,并不是读到内存中,只是等到一个全局句柄,按MSDN的说法是为了backward compatibility,没有实际的意义。

#9


更正错别字:“等”->“得”

#10


是啊  看看哦

#1


你在使用这个资源过程中,资源让修改了怎么办?

#2


锁定资源并得到资源在内存中的第一个字节的指针

#3


资源锁定的目的都是为了防止被别的程序修改。

#4


锁是一种约定,只有大家都遵守这个约定才有效。
表示如果在执行某个操作是否会影响当前操作,如果影响,那就等待或者想其他办法解决,呵呵。

#5


简单地讲,LockResource是返回资源的指针,以便读取资源数据。

所谓Lock,是将数据在内存中锁定,因为其数据原本是在文件里,必须读到内存中才能被程序使用,不是怕被修改。要想理解清楚这个问题,需要了解内存映射的概念。

#6


。。。多线程问题。一个资源,2个或多个线程在使用,必须加锁,保证在某一个时刻只有一个线程能够占有这个资源,直到这个线程把锁放掉

#7


to cnzdgs:
    HRSRC hrsrc = FindResource(NULL, lpszResName, RT_DIALOG); 
    HGLOBAL hglb = LoadResource(g_hinst, hrsrc); 
    return (DLGTEMPLATE *) LockResource(hglb); 

读到内存的操作已经有LoadResource函数操作了

#8


LoadResource与LoadBitmap、LoadIcon等不同,并不是读到内存中,只是等到一个全局句柄,按MSDN的说法是为了backward compatibility,没有实际的意义。

#9


更正错别字:“等”->“得”

#10


是啊  看看哦