关于通讯、数据库、线程同步(配合使用时)的讨论数据库表:SMS
ID
MOBILE //手机号
CONTEXT //内容
STATUS //状态,1,0
实时监控数据库中是否有消息需要发送,如果查询出未发送的记录数大于0,从数据库中取一条STATUS等于0(未发的短信),给发送线程,发送线程发送成功后把该记录更新为已经发送,如果没有发送成功继续发送。看看大家线程处理的时候怎么处理比较好!
//不使用TIME控件,尽量不使用SLEEP
ID
MOBILE //手机号
CONTEXT //内容
STATUS //状态,1,0
实时监控数据库中是否有消息需要发送,如果查询出未发送的记录数大于0,从数据库中取一条STATUS等于0(未发的短信),给发送线程,发送线程发送成功后把该记录更新为已经发送,如果没有发送成功继续发送。看看大家线程处理的时候怎么处理比较好!
//不使用TIME控件,尽量不使用SLEEP
1、为什么不使用TIME的原因是TIME的时间控制很不好控制,只对简单的处理有比较好的效果,如果多个TIME的话肯定要出问题的。
2、没有采用大家说的放入LIST,因为如果发送中途程序关闭那么就会失去LIST中的对象,所以采用了直接读一个,然后发送,发送后更新记录状态,然后再查询。这样保证了数据库的实时同步
3、发送线程采用连接池?没有必要,本身COM口发送的时候就要停留7秒后,才能发送第二个消息。
4、我现在想到的需要用的THREAD,SETEVENT,WaitForSingleObject,EnterCriticalSection(CS);
所以下次启动程序后监控线程还会获取到未发送的数据,所以数据不会丢失。
其它的等高手指点学习