netfilter_netfilter安装_linux netfilter(4)

电脑杂谈  发布时间:2017-03-09 11:06:42  来源:网络整理

• 当T C P收到发自T C P连接另一端的数据,它将发送一个确认。这个确认不是立即发送,

通常将推迟几分之一秒,这将在1 9 . 3节讨论。

• T C P将保持它首部和数据的检验和。这是一个端到端的检验和,目的是检测数据在传输

过程中的任何变化。如果收到段的检验和有差错, T C P将丢弃这个报文段和不确认收到

此报文段(希望发端超时并重发)。

• 既然T C P报文段作为I P数据报来传输,而I P数据报的到达可能会失序,因此T C P报文段

的到达也可能会失序。如果必要, T C P将对收到的数据进行重新排序,将收到的数据以

正确的顺序交给应用层。

• 既然I P数据报会发生重复, T C P的接收端必须丢弃重复的数据。

• T C P还能提供流量控制。T C P连接的每一方都有固定大小的缓冲空间。T C P的接收端只

允许另一端发送接收端缓冲区所能接纳的数据。这将防止较快主机致使较慢主机的缓冲

区溢出。

……………………………………………………………………………………

这两天也是朋友过来了,也没弄毕设了

刚就join()问题弄了下,发现是行不通的,因为这个线程是需要不断运行的,所以join无法等到那个进程结束从而会陷入阻塞。

其实不用做反而效率更高,因为我想前提是我的Singleton模式已经是保证线程安全了。

如果要做,应该用wait()和notify()也能实现,但进入阻塞了。

今天睡不着,看完《速度与》,就看了下,原来wait()进入阻塞的原因是没有其他线程notify().

今天看到WilliamChen的博客写到

“4.public boolean isInterrupted()该线程是否受到中断信号。

5.public static boolean interrupted(),检测当前线程是否接受到中断信号。它实际上是调用了Thread.currentThread().isInterrupted()实现的。

6.public final void join()该方法允许一个线程等待另一个线程的结束。比如t是一个目前正在执行的线程,那么t.join()将目前线程挂起直至线程t结束。

”

觉得在add ip操作时 是不是该等待getIpInfo线程finish??

因为这里2个线程并不需要保证内存一致性,所以只要保证线程的执行顺序,所以我觉得用join()就够了。如果需要考虑内存一致性的话,注意下面那段代码

 private Tank tank;
   public synchronized void putTank(Tank tank){
      //Dont bother to check whether it has room.
      this.tank=tank;
      notifyAll();
   }
   public synchronized Tank getTank(){
      //Check whether there's tank to consume
      while(tank==null){
         //No tank yet, let's wait.
         try{
             wait();
         }catch(InterruptedException e){}
      }
      Tank retValue=tank.
      tank=null; //Clear tank.
      return retValue;
   }
}


本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-36628-4.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    热点图片
    拼命载入中...