小编lah*_*her的帖子

WaitGroup.Wait()的超时

WaitGroup.Wait()分配超时的惯用方法是什么?

我想这样做的原因是为了保护我的"调度员"免于永远等待一个错误的"工人".这导致了一些哲学问题(即一旦有错误的工人,系统如何可靠地继续?),但我认为这个问题超出了范围.

我有一个答案,我会提供.现在我已经把它写下来了,它看起来并不那么糟糕但它仍然感觉比它应该更复杂.我想知道是否有更简单,更惯用的东西,甚至是不使用WaitGroups的替代方法.

助教.

concurrency timeout go

19
推荐指数
3
解决办法
1万
查看次数

如何最好地指定与Netty一起使用的Protobuf(最好使用内置的protobuf支持)

我在协议缓冲区中指定协议.传输层正在利用Netty的Protocol Buffers支持 - 重要的是Netty的ProtobufDecoder接受一种且只有一种类型的MessageLite.

现在,我想在此频道下发送各种不同的消息类型,每个子类型都有与之关联的结构化信息.协议缓冲区没有继承机制,所以我使用的是一种组合.我不确定我是否正确的方式.

我的方法是使用枚举对我的不同事件进行分类,并使用可选成员封装它们的差异.请参阅.proto下面的内容,为了清楚起见,我对其进行了简化.

我的问题是接收代码需要在EventType.ERROR和ErrorEventDetail之间建立关联.这只是感觉有点笨拙.

简化Events.proto:

package events;

option java_package = "com.example";
option java_outer_classname = "EventProtocol";

message Event {
  enum EventType {
    START = 0;
    DELEGATE = 1;
    ERROR = 2;
    STOP = 3;
  }
  required events.Event.EventType event_type = 1 [default = START];
  required int32 id = 2;
  required int64 when = 3;
  optional StartEventDetail start_event_detail = 4;
  optional DelegateEventDetail delegate_event_detail = 5;
  optional …
Run Code Online (Sandbox Code Playgroud)

java protocol-buffers netty

6
推荐指数
1
解决办法
5635
查看次数

标签 统计

concurrency ×1

go ×1

java ×1

netty ×1

protocol-buffers ×1

timeout ×1