gpt4 book ai didi

java - 我必须同步 socket.send 吗?

转载 作者:搜寻专家 更新时间:2023-11-01 02:30:49 25 4
gpt4 key购买 nike

我有 2 个类,其中一个向套接字发送命令,另一个接收(有时回答命令)。

我必须同步这个吗?还是没有必要?

这两个类都在各自的线程中运行,套接字对象作为参数传递给每个类 thread.start();

这是正确的方法还是我可以做一些更有效率的事情?

这会导致错误吗?发送部分:

    public void run(){
send_chatline("roomf");

int vvv = 0;
while (this.socket.isConnected()){
try{
Thread.sleep(10000);
vvv++;

Thread.sleep(10000);
send_chatline("alive");

Thread.sleep(10000);

if (vvv == 1) {
this.socket.flush();
this.socket.send("T,-1," + this.playerid * 3);
this.socket.flush();
}
}
catch (InterruptedException e) {
e.printStackTrace();
}
}
}

但请记住! recieveFromSock 类有时会在特定命令出现时写入。

sendTosock 的唯一功能是保持连接 Activity (能够保持在线)。

最佳答案

唯一的保证是发送的字节只发送一次,读取的字节只读取一次。其他人可能会说同步是由运行时库或底层操作系统负责的。任何此类声明都依赖于运行时实现和/或操作系统(在我看来应该被忽略)。

因此,如果您有一个线程从套接字读取,一个线程写入套接字,那么没有同步应该没问题。

如果多个线程可能写入到套接字,您应该同步它们的操作以确保从两个线程发送的输出不会交错。

如果两个线程从套接字读取,同样适用。您应该同步读取,以确保一个线程读取的数据不会因另一个线程的读取而出现“间隙”。

同样的问题,同样的结论:

关于java - 我必须同步 socket.send 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904694/

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