摘要: 嗯嗯,今天写C代码遇到个warning是关于指针赋值的:char *a = "hello";int *b = a;像上面这种代码,GCC是不报错的,而是报一个warning:warning: initialization from incompatible pointer type若是:float a = 1.1;int* b = &a;也是报上面那个warning. 看来和指针指向的存储区域没关系哈。但是如过一个函数的返回值是一个指针例如:int* tmp(){.... return a; }float *b = tmp();报的warning就不一样了。warn 阅读全文
posted @ 2011-08-12 08:10 人走茶待凉…… 阅读(246) 评论(2) 推荐(0)
摘要: 最近看看书,没怎么写代码,之前那个 fork出个进程是为了一个搞定一个高并发的客户端,用来模仿N个客户同时操作。一些小心得(也许有误):1.能不用锁就不用锁,尽量用内核的原子操作,会快很多。比如多个写操作,open时候用O_APPEND 就好了,不用加锁来防止写乱。2.有读写的话,用 读写锁就好了,N个读用一把锁。那个client端还是有bug, 8月应该要把bug找出来。然后考虑Erlang实现,据说Erlang在并发问题上很赞,可以考虑用Erlang重新实现一下。总是懒得更新博客…… 阅读全文
posted @ 2011-08-01 03:14 人走茶待凉…… 阅读(175) 评论(0) 推荐(0)
摘要: 今天要做这么一件事情,一个主进程fork出N个子进程,然后主进程用roundrobin的策略通知各个子进程, 每通知一次,对应子进程就产生一个线程,去做一件事情。为啥要搞这么麻烦呢,主要是为了防止高并发的情况。其实用线程池应该可以搞定的,不过时间比较赶,能力不济,线程池实现进程来不及。而且一个进程,就算把线程的stack设小,最多也就1000多个线程吧, 多个进程就可以把 capacity 上升到10,000量级。 说穿了,还是为了防止高并发。今天还学到 open 一个文件,加上 O_APPEND, 就是追加,而且是原子操作,以前前我多线程写文件还用了互斥锁,看来完全没有必要。for (i = 阅读全文
posted @ 2011-07-07 09:04 人走茶待凉…… 阅读(1533) 评论(0) 推荐(0)
摘要: 最近在看algorithm design, 真是本好书, 和上学期上课用书 《Algorithms》 风格有点接近,都是用经典的例子阐述思想。相比之下,CLRS 就太没劲了,虽然写的非常严谨,但是有点枯燥,我更喜欢把CLRS当成参考书,和Knuth 的 TAOCP 分成同一类。他的贪心算法涉及了9个小专题吧:1. Interval SchedulingN个工作都有自己固定的起点时间和终点时间,他们都需要一个资源,要求在一段时间内塞进尽量多的工作。当然可以放弃一些工作。Solution: 按照每个工作的 finish time 排序,从小到达。一个拓展就是:不止一个资源(例如,有三个教室),N个 阅读全文
posted @ 2011-07-07 08:26 人走茶待凉…… 阅读(293) 评论(0) 推荐(0)