CppExplore

一切像雾像雨又像风

  C++博客 :: 首页 :: 新随笔 :: 联系 :: 聚合  :: 管理 ::
  29 随笔 :: 0 文章 :: 280 评论 :: 0 Trackbacks
共6页: 1 2 3 4 5 6 
@小星星 这个函数本身并不知道它被用于进入和退出的地方,他只是处理事件
@sohu 你好!你说的不错,是“状态”的层次,对同一个状态机,更容易符合人的正常思维。
这个理论来自于实践吧,先考虑最终需要,再进行实现。

你提出的基于状态机的层次很不错,既然想到了这扇门,打开只是实现上的问题,这比“状态”层面的有更高抽象,简单想想,非常不错
@rqf
说实话,本文本质很垃圾
@zhaoyuexian
顺其自然,有需要的时候自然会用到
re: 自己动手写脚本语言[未登录] cppexplore 2013-09-04 12:35
不错, 学习
当年写的这么一个垃圾实现, 大家就不要再继续留言了 呵呵
re: 准备发布1.0[未登录] cppexplore 2012-02-06 18:25
期待
好象有 助听器 的东西存在, 楼主可以试试.
楼上不淡定了.
顶楼主.
@chipset
站在"造轮子"角度 / "使用轮子" 角度 /"选轮子"角度 看到的东西各有些不同.
@sa
原因: 1) 和linklist相比更节省内存 2)和linklist相比,申请/归还内存更快
@nothing
设置错误状态. 任何状态下增加错误消息处理, 跳转到错误状态. 和普通状态/普通事件同质
书没卖出去
到是要把cppblog给毁了
re: 并列的选择:switch语句 cppexplore 2011-07-16 10:41
兄弟好, 我觉得在cppblog上推销不如在csdn上有效果
@shenkai
等有时间了 写点近2年更精彩的内容
谢谢捧场
2年前对日志完善了不少,以前的错误引导更正下
@田伯光
多进程打印问题:
不可以多进程打印, 除了写不能保证原子性,还有文件更换时的问题.
共享内存共享log对象可以, 这样还不如各自打印独立文件, 同时使用远程syslog方式统一打印到远程(需要自己实现appender)

动态生效问题:
可使用ConfigureAndWatchThread类达到目的, 同时log4cplus中有不少bug,使用这个功能时 要修改不少地方.

@sashion
上上个我的留言里说错了很多地方.
log4cplus没有提供延迟输出的策略, 新的维护者有计划增加异步,还没增加.实现异步延迟打印,需要自己进一步封装实现.

"能在core dump 之前把所有的对象都dump到日志中吗?"
不能. 因log4cplus没有提供延迟输出的策略, 日志同步打印,也不存在这个问题. 若自己实现异步延迟输出的话, 延迟输出的部分可以使用共享内存,另可捕获信号做一定补偿.
不多说了 顶
新年新气象,前途一定更美好!
@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
请不要发广告到首页, 谢谢配合!
@UustCodeIT
session对象和 网络层的connection对象有一定对应关系的
re: 令人气愤的现象[未登录] cppexplore 2010-05-28 08:56
博主不要生气, 平常心看待
我想他也是无意说的.
@OnTheWay
c++里的线程安全单例应该是典型的双重检测.
文中如此实现的话, 每次调用GetInstatnce都要涉及到加锁操作, 估计没人愿意调用.
@种花得花
是错了. 应该先执行func,再执行状态迁移引起的func.

需要为每个event单独配置一个event func, 当然是这个状态对这个event感兴趣的时候, 对不感兴趣的event, 使用改状态的default_func就可以了.

如果每个状态只要一个事件回调, 那说明这个状态只对一个event感兴趣吧(或者你的多个event应该合并成一个), 这个时候基本不需要状态机,保存一个玫举的状态变量就好了, 这是我的一点看法.
@种花得花
兄弟看的仔细啊.
如果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
好文!
@zhaojx
很高兴你能喜欢我写的内容, :)
@cm
试用了内存池吗? 全局内存池的话效果不理想,至少linux下全局的是跑不过dlmalloc的. 据说windows下很容易跑过它自己的malloc子系统吧, 我没测试过,呵呵.
试试区分对象内存池和线程内存池,观察服务器稳定并发能力是否有提高,响应时间是否有稍许改善,cpu利用率是否平稳? 观察下你服务器在规格性能下,是cpu高还是iowait高, 看看系统瓶颈在哪里?
刚顶错地方了 呵呵. 好文! 期待博主继续
不错 好文!! 期待博主继续
@expter
的确不高,呵呵
现在换成线程独自的定时器了,不再加锁,容器换简单的multimap了
@laohu
"尽量避免pthread_mutex进入竞争态。增大消息队列的大小,可以有效减少竞态条件的出现。 "

前一个句号:减少有人拿到了互斥锁的时候,再有人申请,此时后来者将陷入内核等待。

后一个句号:增大消息队列长度,可以减少pthread_cond_signal的调用频率,该调用总是陷入内核。

“互斥变量的竞争和队列长度有什么相关? ”,没啥关系,上面中间是句号, 你当成逗号了吧,呵呵。
@摇摆胖胖
你是指这篇blog里的图吗?这是甘特图,用GanttProject画的 开源的。
时序图,以前用rose画,现在改startuml了,也是开源的
@neou
看过。
两码事情,8253芯片计时,os里中断处理。
语言层面没有这种机制。
可以用boost 或者自己封装一层屏蔽os差异
智能指针常用的就是线程间传递指针类型数据的时候,导致两个线程不能确定该指针释放的时间点,所以基本上不加锁的智能指针用处不大。
re: 扩充完路径库 cppexplore 2009-09-14 19:22
已经移出首页。
cppblog基本上比较自由,是否发首页由作者自己决定,发的时候最好斟酌下,谢谢!
re: pku 2236 cppexplore 2009-07-14 11:09
博主,这种整篇都是代码的文章 就不要再往首页上发了。全是代码,很少会有人看的,很多人订阅了首页,尽量不要浪费大家的时间。
@大华
莫非是浙江大华的朋友,呵呵
共6页: 1 2 3 4 5 6