设计,什么是设计,什么是抽象! 厚道 发表于 2007-3-12 21:52:00
怎么样设计一个结构?如何进行设计,要有这个意识,要设计,不要零散,一个好的结构非常的重要,而设计的一个过程就是一个抽象的过程,往往不是我们平常在书本上看到的那么简单,为什么不进行相应的抽象和设计呢,思考~关键是一个思考,要有这个意识!
但是很多时候,我们都把时间花在debug和系统的细枝末节上了,而忽略了最终要的系统设计,结构设计,模块设计,要高标准严格要求,看设计的是否合理,为什么这么设计!
下面是一个多进程共享缓冲区属性的设计例子,我们平常往往是用一个信号量或者标记为来标记了事,并没有深度挖掘其内在的所有属性,下面是别人的一个设计,我觉的很好:
typed struct {
pthread_mutex_t mutex;
pthread_cond_t ok_to_read;
pthread_cond_t ok_to_write;
int readers;
int writing;
int waiting_writers;
/* data */
} shared_data;
有几个值得称道的地方:
readers:表示出了共享缓冲区可以允许多个进程同时读,但是不能允许多个线程同时写;
writing::标记当前是否有进程正在写数据;
waiting_writers:更是妙哉,标记出了当前还有多少个进程在等待着写;
当前的设计考虑了共享缓冲区的所有可能的状态,看似简单,其实是一个抽象的过程,我们能抽象出这么多状态么?
为什么没有进行相应的思考呢?
并不是说我们 |