10 2012 档案

Linux 多线程环境下 进程线程终止函数小结
摘要:pthread_kill:pthread_kill与kill有区别,是向线程发送signal。,大部分signal的默认动作是终止进程的运行,所以,我们才要用signal()去抓信号并加上处理函数。int pthread_kill(pthread_t thread, int sig);向指定ID的线程发送sig信号,如果线程代码内不做处理,则按照信号默认的行为影响整个进程,也就是说,如果你给一个线程发送了SIGQUIT,但线程却没有实现signal处理函数,则整个进程退出。pthread_kill(threadid, SIGKILL)杀死整个进程。 如果要获得正确的行为,就需要在线程内实现si 阅读全文

posted @ 2012-10-11 19:13 as_ 阅读(23684) 评论(0) 推荐(0) 编辑

Linux 多线程环境下 线程joinable状态和unjoinable状态
摘要:这里主要讨论这两种状态下,线程终止以及资源释放的问题linux线程中,pthread有两种状态joinable状态和unjoinable状态。joinable状态下,当线程函数自己返回退出时或pthread_exit时都不会释放线程所占用堆栈和线程描述符。只有当你调用了pthread_join之后这些资源才会被释放,这是需要main函数或者其他线程去调用pthread_join函数。unjoinable状态的线程,这些资源在线程函数退出时或pthread_exit时自动会被释放。设置unjoinable状态设置有两种办法 一是可以在pthread_create时指定,二是线程创建后在线程中pt 阅读全文

posted @ 2012-10-11 18:02 as_ 阅读(3718) 评论(0) 推荐(0) 编辑

值 引用 指针概念区别汇总
摘要:传值和传引用的概念传值(pass by value):即形参接收实参传递过来的值,如果是自定义类型,要调用拷贝构造函数。函数处理的是形参的值。传引用(pass by reference):引用表示与原对象完全相同,是同一个对象。若函数的形参是引用,则实参与形参间不存在参数传递,且函数内对形参的修改就是修改实参,因为它们是引用关系,是同一个对象。语言应用C语言中,传递的参数类型只有1个:传值,包括传递普通数值和指针。C++中,传递的参数类型有2个:传值、传引用java中,传递的类型只有1个:传值。java中传的值包括:基本数据类型和对象,其中对象当做指针看待三种语言的处理方法相同: 不管传递的是 阅读全文

posted @ 2012-10-11 13:52 as_ 阅读(650) 评论(0) 推荐(0) 编辑

静态编译和动态编译(函数)实现
摘要:资料来源于网络在C++中,联编是指一个计算机程序的不同部分彼此关联的过程。按照联编所进行的阶段不同,可分为两种不同的联编方法:静态联编和动态联编。1.静态联编静态联编是指联编工作在编译阶段完成的,这种联编过程是在程序运行之前完成的,又称为早期联编。要实现静态联编,在编译阶段就必须确定程序中的操作调用(如函数调用)与执行该操作代码间的关系,确定这种关系称为束定,在编译时的束定称为静态束定。静态联编对函数的选择是基于指向对象的指针或者引用的类型。其优点是效率高,但灵活性差.2.动态联编动态联编是指联编在程序运行时动态地进行,根据当时的情况来确定调用哪个同名函数,实际上是在运行时虚函数的实现。这种联 阅读全文

posted @ 2012-10-09 10:12 as_ 阅读(2535) 评论(0) 推荐(0) 编辑

const与define的对比
摘要:define常见用法:1.定义简单的常数:定义常量,便于修改(切不可在后面加上分号!)#define N 1000等效于const int N = 1000;但略有不同,define只是简单替换,而不是作为一个变量来使用.2. 定义简单的函数:注意多使用括号 define可以像函数那样接受一些参数,如下:#define max(x,y) (x)>(y)?(x):(y);3.条件编译(防止重复包括 重复定义)4.定义单行宏,多行宏与const比较部分const常量有数据类型,而宏常量没有数据类型。编译器可以对前者进行类型安全检查。而#define 只作简单的字符串替换,无类型安全检查。co 阅读全文

posted @ 2012-10-09 09:56 as_ 阅读(1519) 评论(0) 推荐(1) 编辑

找出无序数组中第k小的数
摘要:题目描述:给定一个无序整数数组,返回这个数组中第k小的数。解析:最平常的思路是将数组排序,最快的排序是快排,然后返回已排序数组的第k个数,算法时间复杂度为O(nlogn),空间复杂度为O(1)。使用快排的思想,但是每次只对patition之后的数组的一半递归,这样可以将时间复杂度将为O(n)。代码实现:#include <iostream>#include <string>#include <cstring>#include <vector>#include <algorithm>using namespace std;void sw 阅读全文

posted @ 2012-10-05 01:37 as_ 阅读(4421) 评论(3) 推荐(2) 编辑

O(n)回文子串(Manacher)算法
摘要:资料来源网络 参见:http://www.felix021.com/blog/read.php?2040问题描述:输入一个字符串,求出其中最大的回文子串。子串的含义是:在原串中连续出现的字符串片段。回文的含义是:正着看和倒着看相同,如abba和yyxyy。解析:这里介绍O(n)回文子串(Manach... 阅读全文

posted @ 2012-10-04 16:23 as_ 阅读(31117) 评论(6) 推荐(2) 编辑

导航