多线程和多进程分别是什么意思?

多线程和多进程分别是什么意思?,第1张

进程,就是同时可以处理几个程序的意思。
线程,则比较复杂:
便如你打开一个WINAMP,那么CPU就会执行WINAMP程序,然后你随即又双击打开发REALONE,那么,作为优先程序,CPU会暂时性的暂停WINAMP的运行,转而执行优先权高的REALONE程序,这个叫做单线程。
多线程则同,同时开启多个程序,多个程序并行运行互不相冲突,不必中断,这个才叫真正的多线程技术。

Winform类系统的自动更新就是典型的多进程+多线程的例子。其中进程主要有2个,一个是功能进程,一个是下载进程。即,登陆系统时,打开功能程序,验证系统的版本,若版本低于服务器版本,就启动下载进程,将最新版本下载到本地,然后重新打开功能进程。一般大型网游的更新,更新补丁是一个进程,游戏运行是另外一个。多线程就很常见了,比如下载补丁更新进度的提示,安装进度的提示,用的都是多线程技术。即窗体定期刷新进行显示,而真正的处理在和窗体线程同级的另一个线程中很遗憾,这种东西的跨度比较大,没有很简单的例子

进程和线程的区别和联系
1进程有自己独立的地址空间;而线程共享进程的地址空间;
2一个程序至少有一个进程,一个进程至少有一个线程;
3线程是处理器调度的基本单位,但进程不是;
4二者均可并发执行
多线程比多进程成本低,但性能更低。
在UNIX环境,多进程调度开销比多线程调度开销,没有显著区别,就是说,UNIX进程调度效率是很高的。内存消耗方面,二者只差全局数据区,现在内存都很便宜,服务器内存动辄若干G,根本不是问题。
多进程是立体交通系统,虽然造价高,上坡下坡多耗点油,但是不堵车。
多线程是平面交通系统,造价低,但红绿灯太多,老堵车。

利用WEB服务器本身的多线程来处理,从WEB服务器多次调用我们需要实现多线程的程序。



PHP中也能多线程了,那么问题也来了,那就是同步的问题。北京电脑培训知道PHP本身是不支持多线程的,所以更不会有什么像Java中synchronize的方法了。那我们该如何做呢?

1尽量不访问同一个资源。以避免冲突。但是可以同时像数据库 *** 作。因为数据库是支持并发 *** 作的。所以在多线程的PHP中不要向同一个文件中写入数据。如果必须要写的话,用别的方法进行同步。如调用flock对文件进行加锁等。或建立临时文件,并在另外的线程中等待这个文件的消失while(file_exits('xxx'));这样就等于这个临时文件存在时,表示其实线程正在 *** 作。如果没有了这个文件,说明其它线程已经释放了这个。

2尽量不要从runThread在执行fputs后取这个socket中读取数据。因为要实现多线程,需要的用非阻塞模式。即在像fgets这样的函数时立即返回。。所以读写数据就会出问题。如果使用阻塞模式的话,程序就不算是多线程了。他要等上面的返回才执行下面的程序。所以如果需要交换数据最后利用外面文件或数据中完成。实在想要的话就用socket_set_nonblock($fp)来实现。

说了这么多,倒底这个有没有实际的意义呢?在什么时候需要这种用这种方法呢?

答案是肯定的。大家知道。在一个不断读取网络资源的应用中,网络的速度是瓶颈。如果采多这种形式就可以同时以多个线程对不同的页面进行读取。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13418718.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-01
下一篇 2023-08-01

发表评论

登录后才能评论

评论列表(0条)

保存