Während ich nicht für die obere Schicht sprechen kann, kann ich mich darauf beziehen, was auf einer niedrigeren Hardware-Ebene passieren wird, und das könnte einige Einsichten für Ihr Design liefern.
Was auch immer der Stapel auf der oberen Schicht tut, am Ende muss die Operation vom Transceiver-Chip gehandhabt werden.
BLE arbeitet über 40 Kanalband, in denen 3 für Broadcast und andere für die Datenübertragung verwendet werden. Dies wird getan, um in der Lage zu sein, eine Vielzahl von Geräten miteinander kommunizieren zu lassen, die die Kollision begrenzen, indem sie sich auf anderen Frequenzbändern befinden.
Diese Bänder werden basierend auf dem mit dem geringsten Rauschen (oder Verkehr) ausgewählt.
Der Transceiver selbst kann nur in einem Band gleichzeitig kommunizieren (sprechen und hören) und muss zwischen Bändern wechseln, um andere Geräte zu erreichen. Dies geschieht durch ein sehr enges Timing der Kommunikation. Ein weiterer Fakt ist, dass ein drahtloser Transceiver im Grunde eine Art von Halbduplex-Kommunikation mit Kollisionserkennung ist, er kann nicht gleichzeitig senden und hören, noch können zwei Geräte gleichzeitig auf demselben Band senden. Es ist daher durch Design (und Naturgesetze) seriell oder sequentiell.
Wenn Sie eine Operationswarteschlange oder eine Threaded-Implementierung implementieren, muss am Ende alles vom Transceiver seriell/sequenziell behandelt werden.
Wenn Sie von verschiedenen Threads darauf zugreifen, muss der Transceiver möglicherweise die ganze Zeit zwischen den Kanälen springen oder vielleicht verwirrt werden, wenn er auf der oberen Ebene nicht gut gehandhabt wird.
Der einzige gute Grund, den ich sehen könnte, um das auf Thread zu behandeln, würde sein, dass die Verarbeitungszeit des Transceivers bedeutend niedriger als der obere Stapel ist, den Sie ausführen müssen, und Sie Multi-Core-Prozessor nutzen würden.
Aber sonst, wenn sehr spezielle Software brauchen oder Architektur, ich glaube nicht, dass Sie erhebliche Vorteile haben eine andere Implementierung als seriell und ich würde auch mit den Sklaven eins nach dem anderen statt alle gleichzeitig für die Überlegungen oben erläutert.
Meine eigenen Tests bestätigen, dass die Lesevorgänge zumindest pro Verbindung seriell sein müssen, aber ich bin sehr daran interessiert, die Antwort auf Ihren letzten Absatz zu kennen. – stkent