[多线程编程方案的选择]一个监控程序引发多线程方案!!
我的网络内有多台机器,我想实现定时监控网络上的多台机器,并将对每台机器的监控到的信息写到数据库中. 我初次用多线程编程,我不知道应该用哪种方式比较好:
1\根据每个机器启动一个线程,负责扫描端口,和将其值写到数据库中去
2\启动两个线程,一个线程负责写数据库,一个线程负责定时轮询每台机器的端口.发现信息将内容交给写数据库的线程,请大家帮忙给个建议.
[解决办法]
第一种感觉要好一点,不用搞线程同步。
[解决办法]
第一种:这个我比较赞同,如果终端不是很多的情况下这个处理比较好,但是如果终端多的话就要考虑计算机是不是吃得消了,线程是有数量限制的,而且并不是线程开的越多越好。
第二种:这个虽然一个线程只负责读取,一个线程只负责写入,但是还会出现同步问题,处理起来需要考虑的东西比较多。
[解决办法]
写数据库操作是很快的,应该没有必要另开线程(除非轮询操作需要实时响应,
如果你的指纹终端有这种需求,那算我没说)。
另外,给每个指纹机分配一个线程绝对不合理(也太浪费资源了)。一来,轮询
操作不可能很慢,二来,就算你有多个线程分配给每一个指纹机,它们也不可能
真的并行执行——除非你还为每台指纹机分配一个独立的网段和网卡——你不会
有这么多网卡吧?
结论就是:一个后台线程即可,不管有多少指纹机,写个循环轮流处理就行了。
另外别忘了定个适当的轮询间隔,否则你的后台线程CPU占用率就是100%。