【程序编程相关:自己动手,用VC开发WINAMP的音效插】
cstring比起stl的string来说,有很多方便的地方,我特别喜欢它的format,呵呵.有人觉得使用cstring效率会低,那只有一种情况,就是发生堆争用的时候,其它情况下的效率影响,比方说几个字符串的连接等等操作,会构造很多临时对象,我认为这样的效率影响根本就不值得一提.本身cstring的内部做了很多工作了,有的时候我们还是要相信微软的这条基础内裤的(mfc——微软基础类库,呵呵,谐音,基础内裤j). 【推荐阅读:ACE使用经验:获得动态分配的监听端口号】由 mfc 与 atl 提供的默认字符串管理器是全局堆顶上的简单包装.该全局堆是完全线程安全的,即多线程可同时从中分配与释放内存而不会损坏堆.为了确保线程的安全,堆必须将对它的访问进行序列化.实现这一点时通常会用到临界区或类似的锁定机制.每当两个线程试图同时访问堆时,将阻塞其中的一个线程,直至完成另一个线程的请求.对于许多应用程序,这种情况很少发生,并且堆锁定机制带来的对性能的影响可以忽略不计.但是,如果应用程序从堆锁定的多线程争用中频繁访问堆,那么可能造成应用程序的运行速度慢于从单线程访问(即使是在带有多个 cpu 的计算机上运行也是如此).
【扩展信息:通过对COM接口IPicture的安全封】
使用 cstringt 的应用程序更加容易受堆争用的影响,因为在 cstringt 对象上的操作会频繁要求对字符串缓冲区进行重新分配.
减轻线程间堆争用的一个方式是为每个线程从专用的.本地线程堆分配字符串.只要用特定线程分配器分配的字符仅用于该线程中,那么该分配器就不需要线程安全.... 下一页