MathLink中的数据包链:总是严格排序的数据包?

时间:2011-02-21 16:16:24

标签: wolfram-mathematica mathlink

文档未说明返回的数据包的顺序 来自内核的MathLink。很自然地认为(当时 发送头EnterExpressionPacket的输入表达式并在标准模式下工作):

1)始终是下一个InputNamePacket之前的最后一个数据包 ReturnExpressionPacket

2)可能始终只有一个ReturnExpressionPacket和一个OutputNamePacketEnterExpressionPacket

ReturnExpressionPacket

3)OutputNamePacket始终是MessagePacket

之后的下一个

4)TextPacket之后,下一个数据包始终为InputNamePacket 该消息的所有内容

5)标准模式下只有7种类型的返回数据包:OutputNamePacketReturnExpressionPacketDisplayPacketDisplayEndPacketMessagePacketTextPacket,{{1}}。

这些陈述中哪一项属实?

1 个答案:

答案 0 :(得分:4)

  • 1可能无法保证。
  • 2绝对不是真的(评价:“2 + 2 \ n2 + 3”)。
  • 3可能是真的,但可能无法保证。
  • 我相信4是真的。
  • 5不保证。

通常,您应该编写代码以不依赖来自内核的数据包的顺序。在您收到新的InputNamePacket之前,应将评估视为“活动”。 OutputNamePacket应该更新一些变量。 ReturnExpressionPacket应该使用该变量的当前输出名称。如果您收到未知数​​据包,请忽略它并转到下一个数据包。