多线程同步的问题
大家好,我想问一个问题我想实现并行效果,分了几个线程,但是运行到某步时他们会都调用同一个函数,如果分下面几种方式考虑:1、函数在A类下,每个线程调用时都各自实例A类,然后...
大家好,我想问一个问题
我想实现并行效果,分了几个线程,但是运行到某步时他们会都调用同一个函数,如果分下面几种方式考虑:
1、函数在A类下,每个线程调用时都各自实例A类,然后调用各自实例下的函数
2、先实例A类,然后每个线程都调用同一个实例下的函数
这两种情况下程序会怎样运行?
还有为了提高速度怎么才能做到互相不干扰? 展开
我想实现并行效果,分了几个线程,但是运行到某步时他们会都调用同一个函数,如果分下面几种方式考虑:
1、函数在A类下,每个线程调用时都各自实例A类,然后调用各自实例下的函数
2、先实例A类,然后每个线程都调用同一个实例下的函数
这两种情况下程序会怎样运行?
还有为了提高速度怎么才能做到互相不干扰? 展开
- 你的回答被采纳后将获得:
- 系统奖励15(财富值+成长值)+难题奖励10(财富值+成长值)+提问者悬赏15(财富值+成长值)
展开全部
1.每个线程调用各自的对象实例,那么他们之间就没有什么联系,各自调各自的。只要没有访问到同一个资源,就不会发生干扰。
2.调用同一个实例的话,那么这些线程可能都会访问到该类对象的同个资源,这个时候就可能会产生互相干扰。接着就要看是什么干扰了,如果一个资源只需要互斥访问,比如一个变量的++操作,你只需要加一个互斥,让每个线程依次做++操作,这样就可以了。如果a线程需要用到b线程在运算完某一步之后的一个值,那么a线程就需要去等待b线程先去执行。这种情况就需要你去做一个同步就可以了。
2.调用同一个实例的话,那么这些线程可能都会访问到该类对象的同个资源,这个时候就可能会产生互相干扰。接着就要看是什么干扰了,如果一个资源只需要互斥访问,比如一个变量的++操作,你只需要加一个互斥,让每个线程依次做++操作,这样就可以了。如果a线程需要用到b线程在运算完某一步之后的一个值,那么a线程就需要去等待b线程先去执行。这种情况就需要你去做一个同步就可以了。
更多追问追答
追问
那么执行一个对象实例和执行多个对象实例有什么区别呢?在性能上有影响吗?
追答
你的意思是:情况1(10个线程分别去操作10对象),情况2(10个线程去操作一个对象),哪个性能高吧。
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询