谁用成功过boost 1_30_0的signals库了?请进

ahao 2003-07-26 04:39:08
编译什么的都成功,然后copy了一个最简单的例子,运行,在sig();这步就停住,没反应了,我在vc6和vc71上都试了,一样.谁知道怎么回事
...全文
36 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
ahao 2003-07-29
upup
  • 打赏
  • 举报
回复
ahao 2003-07-29
to C3hong(孤傲无敌):
非常感谢:)刚才试的是console的程序,设置成多线程库就出现结果了,但有个问题,在程序结束时会在dbgheap.c里有assert,还没仔细研究,后来用MFC的dialog程序测试,目前好像没什么问题,再次感谢。

to sevencat(七猫):
boost的signal库和linux下的signal其实是两个概念,我觉得前者是非常有用的,实现observer模式是再好不过了。
  • 打赏
  • 举报
回复
sevencat 2003-07-29
UNIX下面这个东西到是很常见,
不过我在WIN下面好像还没看到过用信号的。
也许是我看得少吧。

肯定不是编译的问题不然根本编译不了。

你step into sig()的原代码吧。
我觉得这个库不用也罢。在LINUX开发的时候可以用一用。
  • 打赏
  • 举报
回复
ahao 2003-07-29
谢谢,不过我加了这个选项,结果还是一样
  • 打赏
  • 举报
回复
C3hong 2003-07-29
你用jam 编译的时候,漏了编译选项 -BUILD="<threading>multi",
加上就可以了
  • 打赏
  • 举报
回复
fixopen 2003-07-28
哦,这个例子!
那就不知道是怎么回事了
  • 打赏
  • 举报
回复
fixopen 2003-07-28
sig()是发信号。他会导致调用所有注册(connect)过的槽(slot)。如果slot中有些问题,那么程序有可能会死在那儿的。
  • 打赏
  • 举报
回复
ahao 2003-07-28
其实就是文档里的第一个例子,编译什么的都通过,就是运行不对:

struct HelloWorld
{
void operator()() const
{
std::cout << "Hello, World!" << std::endl;
}
};

int main()
{
// Signal with no arguments and a void return value
boost::signal0<void> sig;

// Connect a HelloWorld slot
HelloWorld hello;
sig.connect(hello);

// Call all of the slots
sig(); // 程序停在这里,没有任何输出

getch();
}
  • 打赏
  • 举报
回复
Muf 2003-07-28
贴出代码吧. 我想代码也不会很长吧.
  • 打赏
  • 举报
回复
ahao 2003-07-28
to fixopen:
你有没有试过其他的例子,有成功过的吗?
  • 打赏
  • 举报
回复
ahao 2003-07-27
up
  • 打赏
  • 举报
回复
ahao 2003-07-27
boost::signals的作用不是这样的吧
  • 打赏
  • 举报
回复
ghtsao 2003-07-27
呵呵,它要等到别的进程给它发信号它才会继续运行。它的作用就是等待信号。
  • 打赏
  • 举报
回复
相关推荐
发帖
工具平台和程序库
加入

2.4w+

社区成员

C/C++ 工具平台和程序库
申请成为版主
帖子事件
创建了帖子
2003-07-26 04:39
社区公告
暂无公告