gpt4 book ai didi

rust - 生成 mio 的 Token 时需要注意哪些限制?

转载 作者:行者123 更新时间:2023-11-29 08:08:03 25 4
gpt4 key购买 nike

The mio library对于异步 I/O,依赖于开发人员提供 the Token type 的实例为了将已经发生的事件关联回源头,例如一个特别的TcpStreamHandler::Timeout .

the implementation可以看出, Token 只是一个usize 的包装类型。每次需要 Token 时简单地增加一个计数器很诱人,但它最终会溢出。

在生成 Tokens 以传递给 EventLoop 时,我应该牢记哪些规则? ?一些具体问题:

  • 如果我有两个线程,每个线程都有自己的 EventLoop,它们能否都使用 Token=0 来监听两个不同流上的事件? (即 Tokens 是否绑定(bind)到特定的 EventLoop 实例?)
  • 我可以使用 Token=0 来同时表示 TcpStream 和未决的 Timeout 吗,还是它们都存储在同一个集合中代币?
  • 0 跳到 1,000,000 有什么坏处吗? (例如,它们是否存储在针对序列号优化的数据结构中?)

谢谢!

最佳答案

简短版本:mio 除了在您收到相应事件时将它们传回给您之外,实际上不会对 token 做任何事情,因此您可以使用任何您想要的 token ,只要 mio 关注。单独回答您的问题:

If I have two threads who each have their own EventLoop, can they both use Token=0 to listen for events on two different streams? (i.e. are Tokens bound to a particular EventLoop instance?)

当然,没关系。

Can I use Token=0 to simultaneously represent both a TcpStream and a pending Timeout, or are they both stored in the same collection of Tokens?

mio 没有 token 集合。如果您不需要唯一的 token 来标识应用程序代码中的内容,您可以在不同的地方自由使用相同的 token 。 (虽然我对这个问题有点困惑,因为据我所知,超时根本不使用 mio Token)

Is there any harm in jumping from 0 to 1,000,000? (e.g. Are they being stored in a data structure that's optimized for sequential numbers?)

没有。正如我上面所说,mio 不关心你的代币的值(value)。

关于rust - 生成 mio 的 Token 时需要注意哪些限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32544641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com