
展开全部

·如果有长期的线程,会妨碍性能,因为操作系统需要在他们之间切换。·的线程必须的存储空间。·线程可能会给程序带来“bug”,因此应小心使用。·线程的终止必须考量其对程序运行的制约。·通常块模型数据是在多个线程间共享的,需要避免线程死锁情况的出现。一些线程模型的背景可以重点讨论一下在Win32环境中常见的一些模型。·单线程模型在这些线程模型中,一个进程中只能有一个线程,剩下的进程需要期待当前的线程执行完。这种建模的特点在于系统完成一个很小的任务都需要占用更长的时间。·块线程模型(单线程多块模型STA)这种建模里android单线程模型,一个程序里可能会包含多个执行的线程。在这里,每个线程被分为进程里一个单独的块。每个进程可以带有多个块,可以共享多个块中的数据。程序要求了每个块中线程的执行时间。所有的请求通过Windows消息队列进行串行化,这样确保了每个时刻只能访问一个块,因而只有一个单独的进程可以在某一个时刻受到执行。这种模型比单线程模型的弊端在于,可以响应同一时刻的多个用户请求的任务而不仅仅单个用户请求。但它的性能还不是很好,因为它使用了串行化的轮询模型,任务是一个接一个得到执行的。·多线程块模型(自由线程块模型)多线程块模型(MTA)在每个进程里只有一个块而不是多个块。

这单个块控制着多个线程而不是单个线程。这里不需要消息队列,因为所有的线程都是相同的块的一个部分,并且可以共享。这样的程序比单线程模型和STA的执行速度都应快,因为增加了平台的负载,因而可以改进来降低平台idle的时间。这些应用程序一般非常复杂,因为程序员必须提供线程同步以确保线程不会并发的请求同样的资源,因而造成竞争状况的出现。这里有必要提供一个锁机制。但是这种虽然会导致系统死锁的出现。进程跟线程都是操作系统的概念。进程是应用程序的执行案例,每个进程是由私有的虚拟地址空间、代码、数据和其他各类平台资源构成,进程在运行过程中建立的资源随着进程的中止而被销毁,所使用的平台资源在进程终止时被释放或关闭。线程是进程内部的一个执行单元。系统建立好进程后,实际上就开展执行了该进程的主执行轮询,主执行原语以变量地址形式,比如说main或WinMain函数,将程序的开启点提供帮Windows平台。主执行线程终止了,进程也就逐渐中止。每一个进程至少有一个主执行线程,它无需由客户去主动建立,是由平台自动建立的。用户按照需要在应用程序中建立其他线程,多个线程并发地运行于同一个进程中。一个进程中的所有线程都在该进程的虚拟地址空间中,共同使用这种虚拟地址空间、全局变量和平台资源,所以线程间的通讯相当便利,多线程技术的应用也较为广泛。

多线程可以推动并行处理android单线程模型,避免了某项任务长时间占用CPU时间。要表明的一点是,到2015年为止,大多数的计算机都是单处理器(CPU)的,为了运行所有这种线程,操作系统为每个独立线程安排一些CPU时间,操作系统以轮换模式向线程提供时间片,这就帮人一种假象,好象这些线程都在同时运行。由此可见,如果两个非常活跃的线程为了争夺对CPU的控制权,程切换时会消耗太多的CPU资源,反而会增加平台的功耗。这一点在多线程编程时需要注意。C++11标准中,STL类库也实现了多线程的类std::thread,使得多线程编程变得便捷。
本文来自电脑杂谈,转载请注明本文网址:
https://www.pc-fly.com/a/jisuanjixue/article-142808-1.html
不过