多线程运行一个进程不会出现问题吗
对于一个进程,如果采用多线程方式运行,多个线程的确是能同时运行,并提高时间效率,但是多个线程同时运行一个程序不会出现并发问题吗?比如两个线程使用一个变量,如果第一个线程修...
对于一个进程,如果采用多线程方式运行,多个线程的确是能同时运行,并提高时间效率,但是多个线程同时运行一个程序不会出现并发问题吗?比如两个线程使用一个变量,如果第一个线程修改了该变量,第二个线程再使用,不是就出问题了吗?另外,对于一个函数,使用多线程的话,那多个线程也不能同时运行啊,肯定是按照程序代码的顺序依次执行啊,求解?
展开
2个回答
展开全部
多个线程同时运行一个程序不会出现并发问题吗?
就是因为会出现同步问题,所以每个操作系统都会采取一系列的线程同步机制啊。
两个线程使用一个变量,如果第一个线程修改了该变量,第二个线程再使用,不是就出问题了吗?
是的,这种情况被称为竞争,操作系统会提供临界区、旋转锁、互斥量、信号量等对象对多个线程竞争的资源进行保护,确保该资源在某一时间只有一个线程对它进行操作。
对于一个函数,使用多线程的话,那多个线程也不能同时运行啊,肯定是按照程序代码的顺序依次执行啊?
由于一个进程的所有线程共享该进程的内存空间,且代码段只读不可写,所以多个线程同时执行一个函数的代码段是可行的,只是系统会为每个线程开辟各自独立的函数栈,所以虽然每个线程可能同时执行一个函数,但拥有一份属于自己的局部变量,互不干扰。
就是因为会出现同步问题,所以每个操作系统都会采取一系列的线程同步机制啊。
两个线程使用一个变量,如果第一个线程修改了该变量,第二个线程再使用,不是就出问题了吗?
是的,这种情况被称为竞争,操作系统会提供临界区、旋转锁、互斥量、信号量等对象对多个线程竞争的资源进行保护,确保该资源在某一时间只有一个线程对它进行操作。
对于一个函数,使用多线程的话,那多个线程也不能同时运行啊,肯定是按照程序代码的顺序依次执行啊?
由于一个进程的所有线程共享该进程的内存空间,且代码段只读不可写,所以多个线程同时执行一个函数的代码段是可行的,只是系统会为每个线程开辟各自独立的函数栈,所以虽然每个线程可能同时执行一个函数,但拥有一份属于自己的局部变量,互不干扰。
追问
你的立脚点是一个线程执行一个函数,一个函数(比如说main),难道就不能由多个线程相互配合,共同完成吗?
追答
多个线程本来就是相互配合的啊,要不用多线程干什么,你是想问多个线程都执行同一个函数?上面已经说了啊,多个线程同时执行同一个函数的代码段是可行的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询