需求:有N个串口通过GSM模块发短信,收短信。需要最快的方法分配给每个端口发送短信的内容,并在发送短信后,等待收短信,读取短信并记录到数据库。
我现在的做法是,取一次需要发送的数据做出List for N个串口,这样需要for 满足N后 再开始分配。如果能每个串口单独发数据 我觉得是效率最高的。
各位老大有何建议?谢谢

解决方案 »

  1.   

    高不高要看你的机器,有两个cpu你非运行一百个线程,未必高,合理创建线程数,每个管理几个串口
      

  2.   

    理论上来说,4核的机器 一个控制台程序+一个数据库+小型web服务,这个控制台程序能跑几个线程?
      

  3.   

    你说的对
    现在的情况是用for 分配12条短信给12个串口,如果小于12条,那就用前面的N个端口发送。
    现在的问题是,需要等最后一个端口读完短信(循环读12个串口),再去执行分配短信给端口。
    我想做成谁读完短信谁就能分配短信发送
      

  4.   


    附上流程:
    class Program
        {
            public static Thread th分配充值 = new Thread(new ThreadStart(分配端口)); 

    static void Main(string[] args){
                                 th分配充值.Start();
         
                                                    }                        public 分配端口()
    { for (int i = 0; i < 端口数; i++){
    Thread th = Thread(new ParameterizedThreadStart(发短信))
    }
    } private 发短信()
       Thread.Sleep(10000);
       读取短信();
                                 }       public 读取短信()
                                   {
     Thread.Sleep(1000);
     同步数据库();
                             删除短信();
    }
                   private 删除短信()
                                   {
                                    }   
         }