浅谈操作系统中用户级线程与内核级线程的优缺点
短信预约 -IT技能 免费直播动态提醒
用户级线程、内核级线程、操作系统、进程、线程
用户级线程
用户级线程是创建与管理由用户程序直接实现的线程。在用户级实现线程的过程中,当一个线程阻塞时,其它的线程照样可以继续运行。因此,用户级线程可有效利用多核处理器的特性。
优点:
- 创建和切换线程耗时较短。
- 不会阻塞内核,也不会影响到其它进程。
- 没有内核线程的统计和调度,所以不会影响到整体性能。
- 可以更容易地进行多线程编程。
// 创建一个用户级线程
pthread_t thread;
pthread_create(&thread, NULL, thread_function, NULL);
// 等待线程结束
pthread_join(thread, NULL);
// 线程函数
void *thread_function(void *arg) {
// 线程要做的事情
return NULL;
}
缺点:
- 没有内核的支持,用户级线程很容易被其它进程或线程所阻塞。
- 用户级线程无法访问内核,也无法使用内核提供的资源。
- 用户级线程间的通信和同步比较困难。
内核级线程
内核级线程由内核创建和管理,与用户级线程不同,内核级线程由内核直接实现。
优点:
- 由内核直接实现,拥有更高的执行优先级。
- 效率更高,因为内核级线程可以在多个CPU上同时运行。
- 更容易与内核交互,可以访问内核资源。
- 内核级线程的通信和同步比较容易。
// 创建一个内核级线程
thread_t tid;
kern_return_t kret = thread_create(NULL, &tid);
if (kret != KERN_SUCCESS) {
// 线程创建失败
}
// 等待线程结束
thread_join(tid);
// 线程函数
void *thread_function(void *arg) {
// 线程要做的事情
return NULL;
}
缺点:
- 创建和切换线程会消耗更多的系统资源。
- 可能阻塞内核,从而影响到其它进程,影响整体性能。
- 线程的创建和管理需要更多的内核支持。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341