用C、Java、Python写多线程有什么区别呢

小编 583

用C、Java、Python写多线程有以下区别:多线程不在C语言的标准中,只能通过调用系统api实现;Java支持并发多个线程,即一个进程可以并发多个线程,每个线程并行执行不同任务;Python不能实现真正的并发,即不能利用多线程实现多核任务,但可以通过多进程实现多核任务。

1.C中的多线程

多线程不在C语言的标准中,只能通过调用系统api实现,不同的编译器根据不同的操作系统和自己的版本提供了不同的库,C++和C提供的库又不一样,不管是什么库,它们思路是一样的,重点在于掌握多线程编程的概念。这里使用VS 2017中的threads库,VS 2019中已经删除了threads库,只能使用c++的库,而使用c++库又会纳入很多c++中的内容,不利于简化代码,选择VS 2017中的threads库是因为无需进行任何配置就可以使用多线程,便于讲解,即使它并不完善。

创建多线程:在VS2017中通过#include<thr/threads.h>可以导入多线程库,在头文件threads.h 中,定义和声明了支持多线程的对象类型、函数和宏。

2.Java写多线程

Java给多线程编程提供了内置的支持,一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程能满足程序员编写高效率的程序,来达到充分利用CPU的目的。因为线程运行于多核CPU上,所以可以让程序实现真正的并发。

在Java中有两种创建方式:继承Thread类和实现Runnable接口。这两种方式都需要重写run()方法,最后用start()方法让该线程进入就绪状态。

3.Python写多线程

Python中的多线程是单CPU意义上的多线程,它和多CPU上的多线程有着本质的区别,这是因为Python中存在着一个叫Global Interpreter Lock(GIL)全局解释器锁。如果一定要通过多线程利用多核,那只能通过C扩展来实现。不过,Python虽然不能利用多线程实现多核任务,但可以通过多进程实现多核任务。多个Python进程有各自独立的GIL锁,互不影响。

python支持两种创建多线程的方式:一是通过threading.Thread () 创建;二是通过继承threading.Thread 类的继承。

延伸阅读

什么是多线程编程

多线程编程技术是Java语言的重要特点。多线程编程的含义是将程序任务分成几个并行的子任务。特别是在网络编程中,你会发现很多功能是可以并发执行的。比如网络传输速度较慢、用户输入速度较慢,你可以用两个独立的线程去完成这两个功能,而不影响正常的显示或其它功能。

多线程是与单线程比较而言的,普通的Windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件,只有等读完这个数据或文件才能接收下一个消息。在执行这个子函数过程中你什么也不能干。但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程利用这个特点将任务分成多个并发任务后,就可以解决这个问题。

回复

我来回复
  • 暂无回复内容

注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部