![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
编程技术
zhuzhubin
本博客只用于学习笔记
展开
-
Windows 线程漫谈——界面线程和工作者线程
每个系统都有线程,而线程的最重要的作用就是并行处理,提高软件的并发率。针对界面来说,还能提高界面的响应力。 线程分为界面线程和工作者线程,界面实际就是一个线程画出来的东西,这个线程维护一个“消息队列”,“消息队列”也是界面线程和工作者线程的最大区别,这个词应该进到你的脑子里,根深蒂固的!如果在界面线程的某个地方停住,这说明它处理不了窗口消息了,所以有时候我们就会看到整个界面无响应了。这种转载 2008-09-28 16:39:00 · 333 阅读 · 0 评论 -
什么是系统调用
定义:linux内核中设置了一组用于实现系统功能的子程序,成为系统调用。系统调用和普通库函数调用非常相似,只是系统调用由操作系统核心提供,运行于核心态,而普通的函数调用由函数库或用户自己提供,运行于用户态。系统调用提供在运行程序和操作系统之间的接口,通常以汇编语言指令形式提供。用户在程序中调用操作系统中的功能子模块。或操作系统核心中设置了一组用于实现各种系统功能的子程序,提供用户程序调用。转载 2010-01-11 22:47:00 · 960 阅读 · 0 评论 -
windows 内核对象
单地说: 内核对象是系统的一种资源。系统对象一旦产生,任何应用程序都可以开启并且使用该对象。系统给内核对象一个计数值作为管理只用,内核对象包括: event,mutex,semaphore,file,file-mapping,preocess,thread.这些内核对象每次产生都会返回一个handle,作为标示,每使用一次,对应的计数值加1,调用CloseHandle可以结束内核对象的使用。转载 2010-01-11 22:32:00 · 469 阅读 · 0 评论 -
使用线程局部存储TLS
Thread local storage(TLS)统一进程的多个线程可以通过由TlsAlloc方法返回的索引值在线程自身的空间内存储和取回一个值。在以下这个例子里,索引值在进程开始时创建,当各个线程启动时,会各自申请一块动态内存并且将内存指针通过TlsSetValue方法存储到各自的TLS空间中(由先前的索引值标定)。CommonFunc方法使用TlsGetValue方法通过索转载 2010-04-19 13:45:00 · 453 阅读 · 0 评论 -
《多线程服务器的适用场合》-- 例释与答疑
《多线程服务器的适用场合》(以下简称《适用场合》)一文在博客登出之后,有热心读者提出质疑,我自己也觉得原文没有把道理说通说透,这篇文章试图用一些实例来解答读者的疑问。我本来打算修改原文,但是考虑到已经读过的读者不一定会注意到文章的变动,干脆另写一篇。为方便阅读,本文以问答体呈现。这篇文章可能会反复修改扩充,请注意上面的版本号。本文所说的“多线程服务器”的定义与前文一样,同时参见《多线程服务器的转载 2010-05-07 14:16:00 · 393 阅读 · 0 评论 -
Linux平台gcc和动态共享库的基础知识
<br />对大多数不从事Linux平台C语言开发的人来说,GNU gcc的一套工具和Linux平台的共享库的使用还是十分陌生的,其实我也不太熟悉,姑且写点基础知识,权当做备忘吧。<br /><br />一、GNU gcc的编译工具用法<br /><br />我们先来写一个简单的C程序:hello.cC代码 #include <stdio.h> void print_hello() { printf("Hello World/n"); } int main(int argc, c转载 2010-09-15 16:19:00 · 379 阅读 · 0 评论 -
C++中接口与实现分离的技术
在用C++写要导出类的库时,我们经常只想暴露接口,而隐藏类的实现细节。也就是说我们提供的头文件里只提供要暴露的公共成员函数的声明,类的其他所有信息都不会在这个头文件里面显示出来。这个时候就要用到接口与实现分离的技术。 下面用一个最简单的例子来说明。 类ClxExp是我们要导出的类,其中有一个私有成员变量是ClxTest类的对象,各个文件内容如下: lxTest.h文件内容:转载 2008-09-26 14:54:00 · 395 阅读 · 0 评论 -
Visual C++开发工具与调试技巧整理
自己总是用VC平台来开发东西,但是有时候总是出这样那样的问题,在这里把Visual C++开发工具与调试技巧整理摘录如下,希望对大家有用,省去大家再去搜索的烦恼。 1.如何在Release状态下进行调试 Project->Setting=>ProjectSetting对话框,选择Release状态。C/C++标签中的Category选General,Optimizations选Disa转载 2009-04-08 13:52:00 · 315 阅读 · 0 评论 -
assert() 函数用法
assert宏的原型定义在中,其作用是如果它的条件返回错误,则终止程序执行,原型定义:#include void assert( int expression );assert的作用是现计算表达式 expression ,如果其值为假(即为0),那么它先向stderr打印一条出错信息,然后通过调用 abort 来终止程序运行。转载 2009-06-04 16:37:00 · 310 阅读 · 0 评论 -
VC使用CRT调试功能来检测内存泄漏
来源:VC社区C/C++ 编程语言的最强大功能之一便是其动态分配和释放内存,但是中国有句古话:“最大的长处也可能成为最大的弱点”,那么 C/C++ 应用程序正好印证了这句话。在 C/C++ 应用程序开发过程中,动态分配的内存处理不当是最常见的问题。其中,最难捉摸也最难检测的错误之一就是内存泄漏,即未能正确释放以前分配的内存的错误。偶尔发生的少转载 2009-06-25 11:05:00 · 438 阅读 · 0 评论 -
windows station和desktop
window station 和desktop。它们主要是用于服务程序,一般的应用程序不必使用它们。它们可以用来对服务进行保护。运行在不同的window station 或不同的desktop下的应用程序,不能互相发送消息、挂钩、使用同一个clipboard等等。主要是出于安全的目的。 服务程序一般使用的是LocalSystem帐户,拥有自己的window翻译 2010-01-17 22:48:00 · 1544 阅读 · 3 评论 -
探寻Windows NT/2000 Copy On Write机制
探寻Windows NT/2000 Copy On Write机制 WebCrazy(http://wecrazy.yeah.net) CopyOn Write机制是典型的Lazy evaluation实现,现代操作系统如WindowsNT/2000,UNIX/Linux的内存管理部分大量使用这种机制。本文通过对Windows NT/2000中Copy OnWrite机制转载 2010-02-05 17:01:00 · 680 阅读 · 0 评论 -
KMP字符串匹配算法【Z】
<br />最普通的字符串匹配算法就不记了,简单贴一下代码int strstr(char *sub, char * str){ int i=0 ; char *p=str, *q=sub; while( *( p+i) !='/0 ' &&*( q+i) !='/0 '){ if( *( q+i) ==*( p+i)) i++; else{转载 2010-09-15 23:35:00 · 440 阅读 · 0 评论