我目前正在使用用于大学项目的软件,该软件已将python嵌入为C程序。他们在C端定义了一些方法,例如“延迟”和“打印”,这些方法获取锁定然后执行其工作。
我尝试使用线程模块创建一些简单的线程,如下所示:
1. Session = threading.Thread(target=test_threading(2, "abcd"))
-程序正常运行
2. Session = threading.Thread(target=test_threading, args = (2, "abcd"))
-程序以TLS退出并返回nullptr。
任何人都可以说出上面创建线程的方式与为什么第二种方式导致TLS nullptr为何有什么区别。
如果我们调用本地python方法,例如,也不要调用C端开发的软件本地方法。而不是delay(1)
调用time.sleep(1)
会导致程序正确执行。
#change session thread call to create error
def test_threading(num, name):
while True:
print "heloo ", str(time.time()), " ", name
delay(0.1)
def OnRun():
while True:
Session1 = threading.Thread(target=test_threading(2, "abcd"))
#Session2 = threading.Thread(target=test_threading, args = (2, "abcd"))
# start the session threads
Session1.start()
#Session2.start()
# wait till the session threads are complete
Session1.join()
#Session2.join()
print "joining"
delay(1)
预期:heloo 1223656 abcd