请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

IoArgs并发读问题

		 IoArgs args = receiveIoArgs;

        IoArgs.IoArgsEventListener listener = SocketChannelAdaptor.this.receiveListener;

        listener.onStarted(args);

        try {
            //具体的读取操作
            if( args.read(channel) > 0  ){

                listener.onCompleted( args );
            }else{
                throw new IOException("cannot read any data");
            }
        }catch (Exception e){}

问题:如果多个HandleInputCallback都被异步调用 了,而他们用的是同一个IoArgs,读数据的时候会不会数据错乱呢,望老师解惑

正在回答

1回答

Qiujuer 2020-08-07 09:53:22

IoArgs所属为一个链接,所以我们需要保证一个链接在整个生命周期中仅仅只会有一个HandleInputCallback以及HandleOutputCallback被线程调用,而不能让多个线程同时调用一个链接的HandleInputCallback。


但可以同时并发多个链接的HandleInputCallback,因为不同链接的IoArgs不同,不存在竞争与数据错乱问题。

1 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
意见反馈 帮助中心 APP下载
官方微信