angelpan1014

 

2012年8月10日

sleep与wait的区别

摘要: 1、这两个方法来自不同的类分别是,sleep来自Thread类,和wait来自Object类。sleep是Thread的静态类方法,谁调用的谁去睡觉,即使在a线程里调用了b的sleep方法,实际上还是a去睡觉,要让b线程睡觉要在b的代码中调用sleep。2、最主要是sleep方法没有释放锁,而wait方法释放了锁,使得其他线程可以使用同步控制块或者方法。sleep不出让系统资源;wait是进入线程等待池等待,出让系统资源,其他线程可以占用CPU。一般wait不会加时间限制,因为如果wait线程的运行资源不够,再出来也没用,要等待其他线程调用notify/notifyAll唤醒等待池中的所有线程 阅读全文

posted @ 2012-08-10 10:25 angelpan1014 阅读(223) 评论(0) 推荐(0) 编辑

2012年8月9日

kill 详解

摘要: kill(传送信号给指定的进程,使用 kill -l 命令可查看linux系统中信号。) 表头文件 #include<sys/types.h> #include<signal.h> 定义函数int kill(pid_t pid,int sig); 函数说明 kill()可以用来送参数sig指定的信号给参数pid指定的进程。参数pid有几种情况: pid>0 将信号传给进程识别码为pid 的进程。 pid=0 将信号传给和目前进程相同进程组的所有进程 pid=-1 将信号广播传送给系统内所有的进程 pid<0 将信号传给进程组识别码为pid绝对值的所有进程 参 阅读全文

posted @ 2012-08-09 17:23 angelpan1014 阅读(363) 评论(0) 推荐(1) 编辑

IPC总结

摘要: IPC进程间通信(Inter-Process Communication)就是指多个进程之间相互通信,交换信息的方法。Linux IPC基本上都是从Unix平台上继承而来的。主要包括最初的Unix IPC,System V IPC以及基于Socket的IPC。另外,Linux也支持POSIX IPC。System V,BSD,POSIX System V是Unix操作系统最早的商业发行版之一。它最初由AT&T(American Telephone & Telegraph)开发,最早在1983年发布。System V主要发行了4个版本,其中SVR4(System V Releas 阅读全文

posted @ 2012-08-09 11:25 angelpan1014 阅读(371) 评论(0) 推荐(0) 编辑

进程间通讯(IPC)的主要方法及优劣

摘要: 管道/FIFO/共享内存/消息队列/信号1.管道中还有命名管道和非命名管道(即匿名管道)之分,非命名管道(即匿名管道)只能用于父子进程通讯,命名管道可用于非父子进程,命名管道就是FIFO,管道是先进先出的通讯方式2.消息队列是用于两个进程之间的通讯,首先在一个进程中创建一个消息队列,然后再往消息队列中写数据,而另一个进程则从那个消息队列中取数据。需 要注意的是,消息队列是用创建文件的方式建立的,如果一个进程向某个消息队列中写入了数据之后,另一个进程并没有取出数据,即使向消息队列中写数据的进程 已经结束,保存在消息队列中的数据并没有消失,也就是说下次再从这个消息队列读数据的时候,就是上次的数据. 阅读全文

posted @ 2012-08-09 11:00 angelpan1014 阅读(359) 评论(0) 推荐(0) 编辑

shmget() -- 建立共享内存

摘要: shmget()函数的原型:int shemget(key_t key,int size,int shmflag)#include <sys/ipc.h>#include <sys/shm.h>int shmget(key_t key, size_t size, int shmflg); key_t key key标识共享内存的键值: 0/ IPC_PRIVATE 。 当key的取值为IPC_PRIVATE,则函数shmget()将创建一块新的共享内存;如果key的取值为0,而参数shmflg中设置了IPC_PRIVATE这个标志,则同样将创建一块新的共享内存。 在IP 阅读全文

posted @ 2012-08-09 10:52 angelpan1014 阅读(527) 评论(0) 推荐(0) 编辑

2012年8月3日

学习中忽略的细节1

摘要: 1 #include<iostream> 2 using namespace std; 3 int main() 4 { 5 const char p[]="I!" //没有‘\0’ 6 "I am a girl"; //结束时才有‘\0’7 //const char* p="I"8 "am a girl";9 cout<<sizeof(p)<<endl;10 cout<<p<<endl;11 return 0; 12 }输出结果是:14I!I am a 阅读全文

posted @ 2012-08-03 09:29 angelpan1014 阅读(88) 评论(0) 推荐(0) 编辑

2012年7月27日

++的前置和后置

摘要: C++编译器是根据运算符函数参数表里是否插入了关键字int来区分是++是前置还是后置的,例如: 1 #include<iostream> 2 using namespace std; 3 class TDpoint 4 { 5 public: 6 TDpoint(int x=0,int y=0,int z=0) 7 { 8 this->x=x; 9 this->y=y; 10this->z=z; 11 } 12 TDpoint operator++(); 13 TDpoint operator++(int); 14 friend TDpoint operator+ 阅读全文

posted @ 2012-07-27 09:25 angelpan1014 阅读(153) 评论(0) 推荐(0) 编辑

2012年7月25日

文件IO操作学习中出错的地方

摘要: 问题1:file1: 1 #include<iostream> 2 #include<fstream> 3 4 using namespace std; 5 class Sprite 6 { 7 public: 8 Sprite(){}; 9 Sprite(string profession,string weapon):profession(profession),weapon(weapon){}; 10 void showSprite(); 11 private: 12 string profession; 13 string weapon; 14 static i 阅读全文

posted @ 2012-07-25 17:12 angelpan1014 阅读(332) 评论(0) 推荐(0) 编辑

导航