失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > F i r s t T h r e a d可以在S e c o n d T h r e a d将5分配给F i r s t T h r e a d的x之前结束它的 操作

F i r s t T h r e a d可以在S e c o n d T h r e a d将5分配给F i r s t T h r e a d的x之前结束它的 操作

时间:2019-11-15 05:55:03

相关推荐

F i r s t T h r e a d可以在S e c o n d T h r e a d将5分配给F i r s t T h r e a d的x之前结束它的 操作

在上面这个代码中, F i r s t T h r e a d可以在S e c o n d T h r e a d将5分配给F i r s t T h r e a d的x之前结束它的

操作。如果出现这种情况,S e c o n d T h r e a d将不知道F i r s t T h r e a d已经不再存在,并且仍然试图修改

现在已经是个无效地址的内容。这会导致S e c o n d T h r e a d产生一次访问违规,因为F i r s t T h r e a d的堆

栈已经在F i r s t T h r e a d终止运行时被撤消。解决这个问题的方法之一是将x声明为一个静态变量,

这样,编译器就为应用程序的数据部分中的x创建一个存储区,而不是在堆栈上创建存储区。

但是这使得函数成为不可重新进入的函数。换句话说,无法创建两个执行相同函数的线程,

因为两个线程将共享该静态变量。解决这个问题(和它的更复杂的变形)的另一种方法是使用

正确的线程同步技术(第8、9章和1 0章介绍)。

如果觉得《F i r s t T h r e a d可以在S e c o n d T h r e a d将5分配给F i r s t T h r e a d的x之前结束它的 操作》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。