随笔分类 -  语言

指针的赋值
摘要:嗯嗯,今天写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 多个子进程
摘要:今天要做这么一件事情,一个主进程fork出N个子进程,然后主进程用roundrobin的策略通知各个子进程, 每通知一次,对应子进程就产生一个线程,去做一件事情。为啥要搞这么麻烦呢,主要是为了防止高并发的情况。其实用线程池应该可以搞定的,不过时间比较赶,能力不济,线程池实现进程来不及。而且一个进程,就算把线程的stack设小,最多也就1000多个线程吧, 多个进程就可以把 capacity 上升到10,000量级。 说穿了,还是为了防止高并发。今天还学到 open 一个文件,加上 O_APPEND, 就是追加,而且是原子操作,以前前我多线程写文件还用了互斥锁,看来完全没有必要。for (i = 阅读全文
posted @ 2011-07-07 09:04 人走茶待凉…… 阅读(1533) 评论(0) 推荐(0)