我目前正在编写一个客户端服务器应用程序作为练习,到目前为止我已经完成了所有工作,但是我有一个心理障碍,我无法成功谷歌自己.
在服务器应用程序中我是否正确认为将数据包处理程序和数据库处理程序从堆栈中工作是正确的做法?我们的想法是,一个线程循环侦听数据包并将数据添加到堆栈,然后另一个线程将数据从堆栈底部弹出,并对SQL数据库进行一些检查.
在这种特殊情况下,数据包处理程序继续工作更为重要.我想我的问题是,这是一个适当的线程使用,我将遇到需要线程锁定的问题,例如,我应该在数据包线程添加到堆栈时锁定数据库处理程序以避免尝试的问题写和读说,堆栈中唯一的值,等等.
感谢大家!
这是一段代码,请注意它正在进行中,所以不要判断,也是我第一次尝试python(我现在享受的不仅仅是perl或php!).
class socketListen(threading.Thread):
def run(self):
while True:
datagram = s.recv('1024')
if not datagram:
break
packetArray = datagram.split(',')
if packetArray[0] = '31337':
listHandle.put(packetArray)
s.close()
class stackOperations(threading.Thread):
def run(self):
while True:
#pull the last item off the stack and run ops on it
#listHandle.getLast is the last item on the queue
def
class listHandle():
def put(shiftData):
if not mainStack:
mainStack = []
mainStack.insert(0,shiftData)
def getLast:
return mainStack.pop()
最佳答案
这就是queues的用途.将堆栈替换为队列而不是,您不必使用任何其他同步方法.顺便提一下,多处理比线程更好,因为它可以利用多核/超线程处理器.接口非常相似,所以值得研究切换.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。