re: 【原创】技术系列之 状态机(一)[未登录] cppexplore 2015-06-02 15:22
@小星星 这个函数本身并不知道它被用于进入和退出的地方,他只是处理事件
re: 【原创】技术系列之 状态机(二)[未登录] cppexplore 2014-11-05 10:15
@sohu 你好!你说的不错,是“状态”的层次,对同一个状态机,更容易符合人的正常思维。
这个理论来自于实践吧,先考虑最终需要,再进行实现。
你提出的基于状态机的层次很不错,既然想到了这扇门,打开只是实现上的问题,这比“状态”层面的有更高抽象,简单想想,非常不错
re: 【原创】技术系列之 定时器(一)[未登录] cppexplore 2014-10-23 14:37
@rqf
说实话,本文本质很垃圾
re: 【原创】技术系列之 状态机(一)[未登录] cppexplore 2014-10-23 14:37
@zhaoyuexian
顺其自然,有需要的时候自然会用到
re: 自己动手写脚本语言[未登录] cppexplore 2013-09-04 12:35
不错, 学习
re: 【原创】技术系列之 定时器(一) cppexplore 2012-12-23 09:38
当年写的这么一个垃圾实现, 大家就不要再继续留言了 呵呵
re: 准备发布1.0[未登录] cppexplore 2012-02-06 18:25
期待
re: 【原创】技术系列之 内存管理(三) cppexplore 2011-12-16 12:21
@chipset
站在"造轮子"角度 / "使用轮子" 角度 /"选轮子"角度 看到的东西各有些不同.
re: 【原创】技术系列之 内存管理(三)[未登录] cppexplore 2011-08-10 12:30
@sa
原因: 1) 和linklist相比更节省内存 2)和linklist相比,申请/归还内存更快
re: 【原创】技术系列之 状态机(一) cppexplore 2011-07-19 12:42
@nothing
设置错误状态. 任何状态下增加错误消息处理, 跳转到错误状态. 和普通状态/普通事件同质
re: 并列的选择:switch语句 cppexplore 2011-07-16 10:41
兄弟好, 我觉得在cppblog上推销不如在csdn上有效果
re: 【原创】高性能服务器本质论 cppexplore 2011-06-04 13:41
@shenkai
等有时间了 写点近2年更精彩的内容
谢谢捧场
2年前对日志完善了不少,以前的错误引导更正下
@田伯光
多进程打印问题:
不可以多进程打印, 除了写不能保证原子性,还有文件更换时的问题.
共享内存共享log对象可以, 这样还不如各自打印独立文件, 同时使用远程syslog方式统一打印到远程(需要自己实现appender)
动态生效问题:
可使用ConfigureAndWatchThread类达到目的, 同时log4cplus中有不少bug,使用这个功能时 要修改不少地方.
@sashion
上上个我的留言里说错了很多地方.
log4cplus没有提供延迟输出的策略, 新的维护者有计划增加异步,还没增加.实现异步延迟打印,需要自己进一步封装实现.
"能在core dump 之前把所有的对象都dump到日志中吗?"
不能. 因log4cplus没有提供延迟输出的策略, 日志同步打印,也不存在这个问题. 若自己实现异步延迟输出的话, 延迟输出的部分可以使用共享内存,另可捕获信号做一定补偿.
re: 【原创】从同步互斥机制到智能指针使用成本 cppexplore 2011-03-28 12:45
@egmkang
:)
re: 2009-2010小结(五)离职始末[未登录] cppexplore 2011-01-27 21:39
不多说了 顶
新年新气象,前途一定更美好!
re: 【原创】高性能服务器本质论 [未登录] cppexplore 2010-12-20 09:22
@Benjamin
有提升. 一个机器跑,和多个机器跑 当然是不一样的.
blog 里很多东西都是简单概述, 可以找其他有关协程的文章看看 :)
re: 我的网络模块设计第二版 cppexplore 2010-10-04 09:28
顶贴支持!
@金庆
线程之间传递指针,基本就是传递智能指针。
传递id代替就是为了避免智能指针
@chaogu
linux的线程调度比windows的差, 有资料表明,windows上线程的调度切换是linux上的1/30大概.
另linux可以把进程和cpu绑定,而线程:低内核的linux则没有相关函数, 2.6小版本内核有相关函数,但绑定不成功, 只有最新的linux内核才可以。
re: 一砣屎自述 cppexplore 2010-08-29 13:45
兄弟,你疯了。
re: 七律一首,咏程序员 cppexplore 2010-08-19 09:02
跟随高人顶帖
re: C++的流设计很糟糕[未登录] cppexplore 2010-07-06 14:29
@cui
......................惊人的一致............
re: C++的流设计很糟糕[未登录] cppexplore 2010-07-06 14:28
兄弟, 你走远了吧. log4cpp的流使用方式就很好啊,类似如此:
#define SLOG(Level,Event) \
do{ \
std::ostringstream _SLOG_BUF_INTERNAL_; \
_SLOG_BUF_INTERNAL_<<Event; \
printf_log(Level,_SLOG_BUF_INTERNAL_.str().c_str()); \
}while(0)
re: 顺便发个招聘信息 cppexplore 2010-07-02 08:48
请不要发广告到首页, 谢谢配合!
re: 【原创】服务器技术系列综述(二) [未登录] cppexplore 2010-06-04 12:06
@UustCodeIT
session对象和 网络层的connection对象有一定对应关系的
re: 令人气愤的现象[未登录] cppexplore 2010-05-28 08:56
博主不要生气, 平常心看待
我想他也是无意说的.
re: 一种线程安全的单例模式实现方式[未登录] cppexplore 2010-05-27 08:56
@OnTheWay
c++里的线程安全单例应该是典型的双重检测.
文中如此实现的话, 每次调用GetInstatnce都要涉及到加锁操作, 估计没人愿意调用.
re: 【原创】技术系列之 状态机(二)[未登录] cppexplore 2010-05-26 09:36
@种花得花
是错了. 应该先执行func,再执行状态迁移引起的func.
需要为每个event单独配置一个event func, 当然是这个状态对这个event感兴趣的时候, 对不感兴趣的event, 使用改状态的default_func就可以了.
如果每个状态只要一个事件回调, 那说明这个状态只对一个event感兴趣吧(或者你的多个event应该合并成一个), 这个时候基本不需要状态机,保存一个玫举的状态变量就好了, 这是我的一点看法.
re: 【原创】技术系列之 状态机(二) cppexplore 2010-05-25 17:50
@种花得花
兄弟看的仔细啊.
如果event产生了state切换,也应该先执行对应的func, 再执行exit func啊.
不太明白你的意思. 不过我实际用的状态机的确和文章中的都差异很大,呵呵, 除了整理调试代码外,最大的修改 就是状态切换时, 不马上切换, 先将状态入队列,等func执行完, 再做实际的state切换,不知道你说的是不是这里的问题.
re: 无锁线程通信(1)[未登录] cppexplore 2010-05-06 13:25
如果不考虑线程wait和signal的问题,仅仅是读写问题,不加锁可行,我觉得前提是:
(1)只有两个线程参与,存在point_r 读指针和point_w 写指针 两个变量。
(2)只有读数据线程 写变量point_r , 只有写数据线程 写变量 point_w 。写就是一个变量的写操作只在一个线程内进行,其他线程只读。
原子性操作不能借助语言层面的volatile实现,必须借助基于硬件的基本原语完成。最近常说的lock_free编程,具体实现是spin_lock,基于CAS原语实现,是因为没有借助内核态的锁而著称。
re: 网站架构演变体系[未登录] cppexplore 2010-04-16 18:43
好文!
re: 【原创】服务器技术系列综述(三) [未登录] cppexplore 2010-04-13 16:48
@zhaojx
很高兴你能喜欢我写的内容, :)
re: 【原创】内存相关分享[未登录] cppexplore 2010-04-02 09:10
@cm
试用了内存池吗? 全局内存池的话效果不理想,至少linux下全局的是跑不过dlmalloc的. 据说windows下很容易跑过它自己的malloc子系统吧, 我没测试过,呵呵.
试试区分对象内存池和线程内存池,观察服务器稳定并发能力是否有提高,响应时间是否有稍许改善,cpu利用率是否平稳? 观察下你服务器在规格性能下,是cpu高还是iowait高, 看看系统瓶颈在哪里?
re: 浅谈游戏服务器-》架构上来看(三) [未登录] cppexplore 2010-02-02 14:11
刚顶错地方了 呵呵. 好文! 期待博主继续
re: 浅谈游戏服务器---功能模块上来看[未登录] cppexplore 2010-02-02 14:08
不错 好文!! 期待博主继续
re: 【原创】技术系列之 定时器(二) cppexplore 2010-02-01 11:36
@expter
的确不高,呵呵
现在换成线程独自的定时器了,不再加锁,容器换简单的multimap了
re: 【原创】技术系列之 线程(二)[未登录] cppexplore 2009-10-30 08:51
@laohu
"尽量避免pthread_mutex进入竞争态。增大消息队列的大小,可以有效减少竞态条件的出现。 "
前一个句号:减少有人拿到了互斥锁的时候,再有人申请,此时后来者将陷入内核等待。
后一个句号:增大消息队列长度,可以减少pthread_cond_signal的调用频率,该调用总是陷入内核。
“互斥变量的竞争和队列长度有什么相关? ”,没啥关系,上面中间是句号, 你当成逗号了吧,呵呵。
re: 【原创】项目管理之 个人小结[未登录] CppExplore 2009-10-16 20:43
@摇摆胖胖
你是指这篇blog里的图吗?这是甘特图,用GanttProject画的 开源的。
时序图,以前用rose画,现在改startuml了,也是开源的
re: 【原创】技术系列之 定时器(二)[未登录] cppexplore 2009-09-29 08:30
@neou
看过。
两码事情,8253芯片计时,os里中断处理。
re: 一个轻量级智能指针实现[未登录] cppexplore 2009-09-23 22:25
语言层面没有这种机制。
可以用boost 或者自己封装一层屏蔽os差异
re: 一个轻量级智能指针实现[未登录] cppexplore 2009-09-23 21:24
智能指针常用的就是线程间传递指针类型数据的时候,导致两个线程不能确定该指针释放的时间点,所以基本上不加锁的智能指针用处不大。
re: 扩充完路径库 cppexplore 2009-09-14 19:22
已经移出首页。
cppblog基本上比较自由,是否发首页由作者自己决定,发的时候最好斟酌下,谢谢!
re: pku 2236 cppexplore 2009-07-14 11:09
博主,这种整篇都是代码的文章 就不要再往首页上发了。全是代码,很少会有人看的,很多人订阅了首页,尽量不要浪费大家的时间。
re: 【原创】技术系列之 状态机(二)[未登录] cppexplore 2009-07-06 20:33
@大华
莫非是浙江大华的朋友,呵呵