2个线程,第二个线程上的Irc连接,想要第一个线程告诉线程发送消息
2 Threads, Irc connection on second thread, want first thread to tell thread to send a message
所以我正在用 pygtk gui 编写一个 irc 聊天机器人。该机器人在主脚本的循环中有其 gui 运行。当我按下 gui 上的一个按钮时,它会启动一个线程,打开一个套接字并连接到一个 irc 通道,当我再次按下它时,它会暂停线程,当我再次按下它时,它会恢复线程。
到这里一切都很好。
但是当我按下 gui(主循环)中的按钮以读取文本框并告诉线程通过 irc 连接发送文本时,我希望它如此。
我的问题是我无法让主循环告诉线程发送文本。我尝试了类似的东西(来测试它):
def botSendMessage(button):
thread.sendMessage(irc, "test")
handlers = {
"on_bot_send_button_clicked": botSendMessage,
}
builder.connect_signals(handlers)
我已经能够实现我正在寻找的东西。我使用了全局变量。
我建议使用两个线程中都可用的队列对象(在创建时传入)在它们之间传递消息。
在irc线程的主循环中,对队列中需要发送的项目进行非阻塞检查。
所以我正在用 pygtk gui 编写一个 irc 聊天机器人。该机器人在主脚本的循环中有其 gui 运行。当我按下 gui 上的一个按钮时,它会启动一个线程,打开一个套接字并连接到一个 irc 通道,当我再次按下它时,它会暂停线程,当我再次按下它时,它会恢复线程。
到这里一切都很好。
但是当我按下 gui(主循环)中的按钮以读取文本框并告诉线程通过 irc 连接发送文本时,我希望它如此。
我的问题是我无法让主循环告诉线程发送文本。我尝试了类似的东西(来测试它):
def botSendMessage(button):
thread.sendMessage(irc, "test")
handlers = {
"on_bot_send_button_clicked": botSendMessage,
}
builder.connect_signals(handlers)
我已经能够实现我正在寻找的东西。我使用了全局变量。
我建议使用两个线程中都可用的队列对象(在创建时传入)在它们之间传递消息。
在irc线程的主循环中,对队列中需要发送的项目进行非阻塞检查。