C++
文章平均质量分 90
lrh406317290
这个作者很懒,什么都没留下…
展开
-
Linux 多线程通信
线程间无需特别的手段进行通信,因为线程间可以共享数据结构,也就是一个全局变量可以被两个线程同时使用。不过要注意的是线程间需要做好同步,一般用mutex。可以参考一些比较新的UNIX/Linux编程的书,都会提到Posix线程编程,比如《UNIX环境高级编程(第二版)》、《UNIX系统编程》等等。 linux的消息属于IPC,也就是进程间通信,线程用不上。linux用pthread_ki转载 2013-01-14 15:56:30 · 285 阅读 · 0 评论 -
高质量C++/C编程指南
文件状态[ ] 草稿文件[√] 正式文件[ ] 更改正式文件 文件标识: 当前版本: 1.0作 者: 林锐 博士完成日期: 2001年7月24日版 本 历 史版本/状态 作者 参与者 起止日期 备注V 0.9草稿文件 林锐 2001-7-1至2001-7-18 林锐起草V 1.0正式文件 林锐 2001-7-18至2001-7-24 朱洪海审查V 0.9,林锐修正草转载 2013-05-15 09:10:13 · 1362 阅读 · 0 评论 -
c++ 类型转换
C风格的强制类型转换(Type Cast)很简单,不管什么类型的转换统统是:TYPE b = (TYPE)a。C++风格的类型转换提供了4种类型转换操作符来应对不同场合的应用。const_cast,字面上理解就是去const属性。static_cast,命名上理解是静态类型转换。如int转换成char。dynamic_cast,命名上理解是动态类型转换。如子类和父类之间的多态类转载 2013-05-10 15:04:48 · 451 阅读 · 0 评论 -
c++ const的其他修饰用法
1.const修饰函数返回值const修饰函数返回值其实用的并不是很多,它的含义和const修饰普通变量以及指针的含义基本相同。(1) constintfun1() 这个其实无意义,因为参数返回本身就是赋值。(2) constint*fun2() 调用时 constint*pValue =fun2();我们可以把fun2()看作成一个变量,那么就是我们上面所转载 2013-05-09 11:33:10 · 608 阅读 · 0 评论 -
c++内联函数inline
内联函数的注意事项: 1.在内联函数内不允许用循环语句和开关语句。 2.内联函数的定义必须出现在内联函数第一次被调用之前。在类中的函数声明时,后跟大括号直接将函数体实现的默认就是内联函数。内联函数的优点:我们可以把它作为一般的函数一样调用,但是由于内联函数在需要的时候,会像宏一样展开,所以执行速度确比一般函数的执行速度要快。当然,内联函数也有一定的局限性。就是函数中的执原创 2013-05-09 11:21:48 · 600 阅读 · 0 评论 -
c/c++ 自己对const修饰指针的理解
/* //const 修饰的*pth,所以对pth指针所指向的内存,是const的,但是指针本身可以变(即可以指向别的变量) int a=10; int b=11; const int *pth; pth=&a; pth=&b; //与上面一样 int a=10; int b=11; int const *pth; pth=&a; pth=&b;原创 2013-05-09 10:36:23 · 559 阅读 · 0 评论 -
c++ map中key为类对象或结构体
C++实际开发的过程会经常使用到map。map是一个key-value值对,key 唯一,可以用find进行快速的查找。其时间复杂度为O(logN),如果采用for循环进行遍历数据时间复杂度为O(N)。如果map中的数据量比较少 时,采用find和for循环遍历的效率基本没有太大的区别,但是在实际的开发过程中,存储在map中的数据往往是大量的,这个时候map采用find方式效率比遍历效率高的多。转载 2013-05-19 16:40:06 · 6698 阅读 · 2 评论 -
C++ 智能指针详解
一、简介由于 C++ 语言没有自动内存回收机制,程序员每次 new 出来的内存都要手动 delete。程序员忘记 delete,流程太复杂,最终导致没有 delete,异常导致程序过早退出,没有执行 delete 的情况并不罕见。用智能指针便可以有效缓解这类问题,本文主要讲解参见的智能指针的用法。包括:std::auto_ptr、boost::scoped_ptr、boost::share转载 2013-05-16 14:28:44 · 467 阅读 · 0 评论 -
pc-lint静态代码分析工具(检查linux下C++代码的实现方式)
最近公司让看一下代码分析工具,说了一个pclint,网上看了一下,pc-lint只是在windows下使用的东西,还可以结合开发工具,挺好的,但是让我苦恼的是本人的代码是在linux下用C和C++结合写的,这下就苦逼了。又去网上游呀游。于是找到了splint,在虚拟机上装了一下,兴高采烈的以为可以了,结果又苦逼了,仔细看了一下,splint只能检查纯C的代码,对于有string的东西,它都会报错!原创 2013-04-28 15:49:05 · 8841 阅读 · 1 评论 -
pthread_cond_write
1 #include 2 #include 3 #include 4 #include 5 6 pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER;/*初始化互斥锁*/ 7 pthread_cond_t cond = PTHREAD_COND_INITIALIZER;//init cond原创 2013-03-13 16:50:56 · 507 阅读 · 0 评论 -
Linux 多线程应用中如何编写安全的信号处理函数
Linux 多线程应用中编写安全的信号处理函数在开发多线程应用时,开发人员一般都会考虑线程安全,会使用 pthread_mutex 去保护全局变量。如果应用中使用了信号,而且信号的产生不是因为程序运行出错,而是程序逻辑需要,譬如 SIGUSR1、SIGRTMIN 等,信号在被处理后应用程序还将正常运行。在编写这类信号处理函数时,应用层面的开发人员却往往忽略了信号处理函数执行的上下文背景,没有考转载 2013-03-14 09:23:05 · 495 阅读 · 0 评论 -
UNIX Fork函数的理解
在编写并发服务器程序之前,对fork函数的理解是必不可少的。 如果从未接触过该函数,那么理解fork的最困难之处就在于调用它一次。但是却返回二次。它在调用进程中返回一次。返回值为新派生进程的进程ID,在子进程中返回一次。返回值为0,由此返回值可以作为判断当前进程是子进程还是父进程。 fork返回的是子进程的进程ID而不是父进程的Id的原因在于:在子进程中可以使原创 2013-01-14 16:43:12 · 897 阅读 · 2 评论 -
UNIX网络编程之旅-配置unp.h头文件环境
最近在学UNIX下的网络编程,所以就找来一本UNIX网络编程看了看。结果刚看到第一章的第一个例子的时候傻眼了。unp.h,貌似没见过,百度百科后知道是要自己下载的,所以就试试了。我分为3步。1,先从网上下载一个叫unpv.13e.tar.gz的东东。2,解压后make。(解压后在终端下进入解压后的目录下。执行下面的命令行) (1) ./configure (原创 2013-01-14 15:07:18 · 866 阅读 · 0 评论 -
Win32平台下OpenSSL编写SSL,TLS程序
一、简介:SSL(Secure Socket Layer)是netscape公司提出的主要用于web的安全通信标准,分为2.0版和3.0版.TLS(Transport Layer Security)是IETF的TLS 工作组在SSL3.0基础之上提出的安全通信标准,目前版本是1.0,即RFC2246.SSL/TLS提供的安全机制可以保证应用层数据在互联网络传输不 被监听,伪造和窜改.转载 2013-07-26 10:47:43 · 1037 阅读 · 0 评论