【问题标题】:Unsynchronized way to write on Bluetooth on BluetoothChat example在 BluetoothChat 示例上以不同步的方式在蓝牙上写入
【发布时间】:2014-01-30 19:49:52
【问题描述】:

这是我第一次在 Android 上参与基于蓝牙的应用程序,为了更好地了解它的工作原理,我正在研究 BluetoothChat 示例。
或多或少,我想我什么都明白了,但我已经到了无法再进一步的地步了。
以这种方式写入数据的原因是什么?

public void write(byte[] out) {
    // Create temporary object
    ConnectedThread r;
    // Synchronize a copy of the ConnectedThread
    synchronized (this) {
        if (mState != STATE_CONNECTED) return;
        r = mConnectedThread;
    }
    // Perform the write unsynchronized
    r.write(out);
}

为什么不直接调用 mConnectedThread.write(out)?
这个同步的目标是什么?

我理解(显然是错误的)这段代码只在主线程上执行,在这种情况下,为什么我们需要这个互斥锁?

谢谢大家。
P.S.:对不起我的英语不好!

【问题讨论】:

    标签: android multithreading bluetooth


    【解决方案1】:

    对于问题部分:同步的目标是什么? - 目标似乎是以线程安全的方式访问 mThread 和 mConnect 变量(即在另一个变量,而一个正在被访问)。此链接(以及其中的其他链接)将通过Java Synchronization 得到更多关注

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多