Pthreads n 体问题】的更多相关文章

▶ <并行程序设计导论>第六章中讨论了 n 体问题,分别使用了 MPI,Pthreads,OpenMP 来进行实现,这里是 Pthreads 的代码,分为基本算法和简化算法(引力计算量为基本算法的一半,但是消息传递较为复杂) ● 基本算法 // pth_nbody_basic.c,Pthreads 基本算法 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math…
▶ <并行程序设计导论>第六章中讨论了 n 体问题,分别使用了 MPI,Pthreads,OpenMP 来进行实现,这里是 OpenMP 的代码,分为基本算法和简化算法(引力计算量为基本算法的一半,但是消息传递较为复杂) ● 基本算法 // omp_nbody_basic.c,OpenMP 基本算法 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h&g…
▶ <并行程序设计导论>第六章中讨论了 n 体问题,分别使用了 MPI,Pthreads,OpenMP 来进行实现,这里是 MPI 的代码,分为基本算法和简化算法(引力计算量为基本算法的一半,但是消息传递较为复杂) ● 基本算法 //mpi_nbody_basic.c,MPI 基本算法 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #inc…
CentOS 6.3 cd /root mkdir pthreads //get php-5.6 and install zts version wget cn2.php.net/get/php-5.6.11.tar.gz/from/this/mirror tar zxf /php-5.6.11.tar.gz cd /php-5.6.11 ./configure --prefix=/usr/local/php-zts --with-config-file-path=/usr/local/php-…
我们常常会碰到这样一种情况,开发环境在windows下开发,而生产环境确是linux.windows下能正常运行,上传到linux后却无法好好地玩耍了.然后开始了一轮尼玛式的疯狂的查找原因,最后发现是服务器环境问题.这时只能默默地爆一句shit.最近在用php多线程开发一个小功能也碰到类似的问题,在此记录一下. 1.查找资料发现php5.3或以上,且线程安全版本,才支持多线程.于是通过phpinfo()查看,发现php版本过低且为非线程安全版本.因而首先需要升级php版本,由于采用了集成式的wd…
安装Pthreads 基本上需要重新编译PHP,加上 --enable-maintainer-zts 参数,但是用这个文档很少:bug会很多很有很多意想不到的问题,生成环境上只能呵呵了,所以这个东西玩玩就算了,真正多线程还是用Python.C等等 以下代码大部分来自网络 一.安装 这里使用的是 php-7.0.2 ./configure \ --prefix=/usr/local/php7 \ --with-config-file-path=/etc \ --with-config-file-s…
1. 参考手册http://php.net/manual/zh/book.pthreads.php 2. windows下安装php真正的多线程扩展pthreads教程http://www.thinkphp.cn/topic/22676.html 3. PHP 真正多线程的使用http://zyan.cc/pthreads/ 4. PHP 高级编程之多线程…
from:http://blog.csdn.net/aoyoo111/article/details/19020161 一.判断PHP是ts还是nts版 通过phpinfo(); 查看其中的 Thread Safety 项,这个项目就是查看是否是线程安全,如果是:enabled,一般来说应该是ts版,否则是nts版. 二.根据PHP ts\nts版选择对应pthreads的版本 windows版本的下载地址 http://windows.php.net/downloads/pecl/releas…
研究了3周吧,本来打算用pthreads+event扩展的,结果event扩展太原始了,太多函数了,实在不知道怎么在外部随时发送数据给客户端,所以改用libevent, 改用libevent之后花了2个小时就运行起来了. 当然并不敢说稳定,而且有个地方用了一个"适应"bug的地方,避免bug 两个扩展都从pecl.php.net下载就可以了, 安装,不想写了,16:25了还没吃早饭 午饭 上代码,欢迎讨论: 我的QQ群: PHPer&Webgame&移动开发,群号:95…
环境CentOS 6.3 64bit,php 5.4.5 pthreads需要线程安全环境, 下载php的安装包,解压: tar zxvf php-5.4.5.tar.gz//名字是不是这个我不确定,自己去下载 安装: ./configure --enable-zts --prefix=/usr/local/php-zts //或者 --enable-maintainer-zts make make install 结果就把线程安装版的php安装到了/usr/local/php-zts,目前我不…
以前使用curl的多线程并不是真正的多线程,只是一种模拟的多线程,现在使用pthreads来实现真正意义上的多线程. 下载: windows下: http://windows.php.net/downloads/pecl/releases/pthreads/0.0.45/ mac.unix.linux下: https://github.com/krakjoe/pthreads 安装方式: windows下: 解压得到pthreadVC2.dll和php_pthreads.dll文件,把vc2文件…
通过空间历史浏览,爬出查看你空间的人(一般限制20人,除非开通黄钻),然后在爬出这20人的浏览记录,依次向下爬,你可以控制爬行深度.这里仅仅给出怕中代码片段,你可以进一步优化,将QQ分类存储.通过QQ相互浏览关系,可以通过绘图工具绘制好友网络.等等 代码涉及pthreads 如果不清楚请阅读:<PHP 高级编程之多线程>http://netkiller.github.io/journal/thread.php.html <?php /* Homepage: http://netkille…
扩展地址:http://docs.php.net/manual/zh/book.pthreads.php 注意事项php5.3或以上,且为线程安全版本.apache和php使用的编译器必须一致.通过phpinfo()查看Thread Safety为enabled则为线程安全版.通过phpinfo()查看Compiler项可以知道使用的编译器.本人的为:MSVC9 (Visual C++ 2008). 本人使用环境32位windows xp sp3,wampserver2.2d(php5.3.10…
更CPU多线程编程,通过笔者的研究发现,,pthreads使用日趋广泛.它是螺纹POSIX标准,它定义了一组线程的创建和操作API. 配置环境见上博客文章.配置环境后,只需要加入#include <pthread.h>,就能够使用pthreads的API了.本文主要介绍一下怎样使用pthreads创建多线程,并终止线程.分为三个部分.第一部分给出代码演示样例.第二部分对代码进行解说.第三部分给出执行结果. 一.代码演示样例 本程序创建了5个线程.分别输出Hello World!以及线程编号.…
这部分不需要看了. 因为C++11和BOOST比这个Pthreads要好一点. 如果不考虑移植性,在Windows平台上用核心编程的东西比C++11和BOOST更好控制.…
在多CPU多线程的编程中,通过作者的学习发现,pthreads的运用越来越广泛,它是线程的POSIX标准,定义了创建和操作线程的一整套API.环境的配置见上一篇博文,配置好环境后只需要添加#include <pthread.h>,就可以使用pthreads的API了.本文主要介绍一下如何使用pthreads创建多线程,并终止线程.分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分给出运行结果. 一.代码示例 本程序创建了5个线程,分别输出Hello World!以及线程编号.…
这个pthread.h文件可以在NDK环境里创建子线程,并对线程能够做出互斥所.等待.销毁等控制. 写这个博客的原因是我要写如何使用FFmpeg播放视频,因为同时需要播放音频和视频所以需要开启线程,并设置生产者和消费者的关系. 好了直接上整体 1.开启和销毁线程 pthread_create函数能够创建线程,第一个参数是线程的引用,第二个是线程的属性,一般为NULL,第三个为线程运行的函数,第四个是给线程运行函数的参数 pthread_create又是开启线程,只要运行了这个函数线程就会运行起来…
这里讲的是如何编译安装pthreads,以后编译安装其他PHP扩展可以参考此方法. 下载pthreads源码:http://pecl.php.net/package/pthreads 首先确定安装的php版本是线程安全的,如果不是的话重新编译加上 --enable-maintainer-zts \ 1.解压tar -zxvf pthreads-0.0.44.tgz ; 2.进入源码文件夹 cd pthreads-0.0.44 执行 /usr/local/php/bin/phpize; 3.执行.…
我们使用pthreads,来写一个多线程的抓取页面小程序,把结果存到数据库里. 数据表结构如下: CREATE TABLE `tb_sina` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT 'ID', `url` varchar(256) DEFAULT '' COMMENT 'url地址', `title` varchar(128) DEFAULT '' COMMENT '标题', `time` datetime DEFAULT…
一.子线程无法访问父线程的全局变量,但父线程可以访问子线程的变量 <?php class Task extends Thread { public $data; public function run() { global $num; var_dump($num); $this->data = 'abc'; //这是打印null var_dump($GLOBALS); $GLOBALS['test'] = 'def'; } } //主线程中的全局变量,子线程中是无法访问的 //php中创建子线…
由于pthreads v3中引入了Threaded对象自动不变性的概念,所以当我们在构造函数中给成员设置为数组时,在其他地方就无法对成员再次改写了. 例子如下: <?php //pthreads v3引入了Threaded对象自动不变性的概念 //如果成员被设置成Threaded对象,那么它将不能被再次改写 //当然,这主要还是为了性能优化,但有时我们又需要改写成员,那么就需要继承自Volatile类了 class Task extends Thread { private $data; pri…
之所以会用到同步,是因为如果多个线程中对同一个资源进行操作时,会发生混乱. 比如2个线程对变量进行加1操作,第1个线程还没来的及改写数据时,第2个线程就对变量进行操作了,那变量最终的结果就是未知的,这个时候就需要同步来进行控制了. 例子如下: <?php class Count extends Thread { public $cnt = 0; public function run() { $this->add(); } public function add() { //对成员进行加1操作…
我的centos版本是7.4.1708,php的版本是7.2.4(注意要是线程安全版),如下图所示: 首先我们在如下网址下载好pthreads的源码: http://pecl.php.net/package/pthreads 如:pthreads-3.1.6.tgz 1.解压.并进入目录 > tar xf pthreads-3.1.6.tgz > cd pthreads-3.1.6 2.运行phpize,生成configure,如果没有配置PATH的,可以打上绝对路径. > phpize…
前言 Pthreads 有几种工作模型,例如 Boss/Workder Model.Pileline Model(Assembly Line).Background Task Model.Interface/Implementation Model,详细介绍可以参考 pthread Tutorial,这里给出一个流水线模型(Pipeline Model)的简单示例.在该示例中,主线程开启了两个子线程,一个子线程用来读取文件,一个子线程用于将结果写入文件,而主线程自身用来计算. 模型说明 很多时候…
pthreads扩展安装步骤 1.查看phpinfo() 获取PHP版本号及位数(x86表示32位,x64表示64位).编译器版本.PHP配置文件加载所在位置等.如下图所示: 2.pthreads扩展下载地址:http://windows.php.net/downloads/pecl/releases/pthreads/ 3.在扩展列表中找到对应版本 4.php_pthreads-2.0.9-5.5-ts-vc11-x86.zip参数详解 2.0.9代表pthreads的版本号 5.5代表php…
条件变量(Condition Variables) 参考资料:http://game-lab.org/posts/posix-thread-cn/#5.1 条件变量是什么? 条件变量为我们提供了另一种线程间同步的方法,然而,互斥量是通过控制线程访问数据来实现同步,条件变量允许线程同步是基于实际数据的值. 如果没有条件变量,程序员需要让线程不断地轮询,以检查是否满足条件.由于线程处在一个不间断的忙碌状态,所以这是相当耗资源的.条件变量就是这么一个不需要轮询就可以解决这个问题的方法. 条件变量总是跟…
互斥量(Mutex)是“mutual exclusion”的缩写.互斥量是实现线程同步,和保护同时写共享数据的主要方法. 互斥量对共享数据的保护就像一把锁.在Pthreads中,任何时候仅有一个线程可以锁定互斥量,因此,当多个线程尝试去锁定该互斥量时仅有一个会成功.直到锁定互斥量的线程解锁互斥量后,其他线程才可以去锁定互斥量.线程必须轮着访问受保护数据. 一个拥有互斥量的线程经常用于更新全局变量.确保了多个线程更新同样的变量以安全的方式运行,最终的结果和一个线程处理的结果是相同的.这个更新的变量…
产品想实现PHP端的多线程下载 百度了下找到了一个方法,通常需要开启PHP线程安全策略,就是 编译安装的时候  --enable-maintainer-zts 然后安装pthreads扩展, 但是pthreads扩展 目前只支持php7.0以上的版本 测试了1个小时,写点心得…
1.下载pthreads的源码包 https://pecl.php.net/package/pthreads 如:pthreads-3.1.6.tgz 2.解压 > tar zxvf pthreads-3.1.6.tgz > cd pthreads-3.1.6 3.通过phpize命令生成configure > /data/nmp/php/bin/phpize 4.生成好后,运行configure > ./configure --with-php-config=/data/nmp/…
1.检查PHP版本是否支持线程安全 在phpinfo()的显示页中,搜索Thread Safety,如果是enabled,则PHP版本是线程安全的. 2.在http://windows.php.net/downloads/pecl/releases/下搜索pthreads扩展 寻找与自已PHP版本一致的pthreads扩展,我的PHP版本是5.4.38,所以选择2.0.9的版本. 3.解压文件,把其中的pthreadVC2.dll和php_pthreads.dll分别拷贝到php安装目录下和ph…