V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
thunder123bird
V2EX  ›  问与答

信号采集软件架构与设计模式选择

  •  
  •   thunder123bird · 2017-02-28 18:41:22 +08:00 · 1236 次点击
    这是一个创建于 2824 天前的主题,其中的信息可能已经有所发展或是发生改变。

    简要说明:

    1.软件通过第三方库连接采集设备,通过发送命令的方式来对采集设备进行控制;

    2.发送命令函数返回值指示命令是否执行成功;

    3.发送命令的函数是阻塞式函数,最长执行时间为 1 秒;

    自己的初步想法:

    1.采用命令模式,将需要的功能封装在具体的命令类里面(比如: OpenDeviceCMD , CloseDeviceCMD , ConfigDeviceCMD , ReadDataCMD 等),将命令的具体执行封装到 Device 类(相当于命令模式中的 Reciver )里面,此外 Device 类还采用单例模式设计;

    2.由于各个命令都比较耗时,准备将 Device 类的执行放到单独的线程中,避免阻塞主线程;

    自己的疑问:

    1. 由于采用多线程设计,使得命令的执行状态(如,何时执行完毕,执行结果如何,读取的数据在哪儿等)主线程无法知晓,请问这种情况下应该怎么办?

    2. 有没有更好的设计思路,简化系统设计?

    3 条回复    2017-02-28 22:58:54 +08:00
    billlee
        1
    billlee  
       2017-02-28 21:13:54 +08:00
    你的主线程是 GUI 线程吗?如果是就给事件队列发消息啊
    kqz901002
        2
    kqz901002  
       2017-02-28 21:22:39 +08:00
    事件
    ihuotui
        3
    ihuotui  
       2017-02-28 22:58:54 +08:00 via iPhone
    看 netty 或者 nio 的设计
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1031 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:56 · PVG 06:56 · LAX 14:56 · JFK 17:56
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.