消息队列使用的 msg_buf_t 结构体里面的 mtype 是长整型的!

今天下午弄了好久总算把 pure-ftpd with libantixunlei 部署到64位系统上去了。期间调教了好久。
首先想起来长整型(long)在64位系统上是8字节,而在32位系统上是4字节。于是就出现了一些数据结构对齐的问题,这个问题弄下来以后,偶索性把所有的long都替换成了int,然后编译安装,一切顺利。
但是运行的时候,却发现主进程的消息处理线程阻塞死了,根据调试信息,子进程明明已经把消息发送出去了,但是消息处理线程硬是收不到,一直阻塞在msgrcv函数那里。
于是又折腾了好久,后来才想到,会不会是这个msg_buf_t里面用来标识消息类型的mtype是长整型的,如果这样的话,刚才我把所有的long替换成int,肯定影响到这里了。之前偶在网上看消息函数的时候,有些文章定义这个结构体的时候用的是整型,而有些文章用的是长整型,哎呀真是不严谨啊。
于是把这个结构体里面的 int mtype 改成 long mtype,编译安装运行,正常了……
所以说long和int一定要慎用啊……

This entry was posted in 技术向 and tagged , , . Bookmark the permalink.

19 thoughts on “消息队列使用的 msg_buf_t 结构体里面的 mtype 是长整型的!

  1. 然后我发现我一直弄错了一个概念

    信息和信息熵不是同一个东西
    貌似x的信息熵其实是-2^x的信息

  2. 呃,看来这样可以区分一下intelligence和wisdom
    也就是有wisdom无处可用。。的效果

    啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊发现要是搞个比金钱更好的互助积分系统的话需要学习最大熵算法,啊啊啊啊啊啊啊啊啊啊啊怎么搞的说?

  3. 我们这有个名字叫做“软酷课程设计”的啥扯淡东西严重侮辱人的智商
    啊啊啊啊啊啊啊啊啊啊啊啊啊啊如何搞到intelligence drain resistance的说
    词汇来自前几年有人推荐的某垃圾命令行游戏

发表评论

电子邮件地址不会被公开。

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>