Pthreads学习和总结1

1. Pthreads例子

POSIX线程(POSIX threads),简称Pthreads,它是线程的POSIX标准。该标准定义了创建和操纵线程的一整套API。在类Unix操作系统(Unix、Linux、Mac OS X等)中使用Pthreads作为操作系统的线程。Windows操作系统也有其移植版pthreads-win32。Pthreads定义了一套C语言的类型、函数与常量,它以pthread.h头文件和一个线程库实现。举个例子,如下所示:

 1 #include <pthread.h>
 2 #include <iostream>
 3 using namespace std;
 4
 5 void* tprocess1(void* args) {
 6    while(1) {
 7      cout << "tprocess1" << endl;
 8    }
 9    return NULL;
10 }
11
12 void* tprocess2(void* args){
13    while(1){
14      cout << "tprocess2" << endl;
15    }
16    return NULL;
17 }
18
19 int main(){
20    pthread_t t1;
21    pthread_t t2;
22    pthread_create(&t1, NULL, tprocess1, NULL);
23    pthread_create(&t2, NULL, tprocess2, NULL);
24    pthread_join(t1, NULL);
25    return 0;
26 }

说明:g++ TestPthreads.cpp -o TestPthreads -lpthread

2. Nsight Eclipse Edition开发Pthreads应用程序

主要是配置Cross G++ Linker中的Libraries。如下所示:

参考文献:

[1] POSIX Threads Programming:https://computing.llnl.gov/tutorials/pthreads/

[2] pthreads的基本用法:http://www.ibm.com/developerworks/cn/linux/l-pthred/

时间: 2024-10-25 07:44:21

Pthreads学习和总结1的相关文章

PHP pthreads学习笔记

最近在学习PHP pthreads,我把相关的学习笔记整理了下共享给大家. 1. 开启多个线程并发执行. 1 <?php 2 class HelloWorld extends Thread { 3 public function __construct($world) { 4 $this->world = $world; 5 } 6 7 public function run() { 8 print_r(sprintf("Hello %s\n", $this->wor

学习pthreads,管理线程的栈

进程的地址空间分成代码段,静态数据段,堆和栈段.线程栈的位置和大小是从它所属的进程的栈中切分出来的.每个栈必须足够大,以容纳所有对等线程的函数的执行以及它们将会调用的例程链.或许你会问为什么要进行线程栈的管理?因为栈的管理由系统自动管理.但是针对具体问题,有可能系统自动管理的栈不能满足运行的要求,这时对线程的栈的管理是必要的.本文分为三个部分,第一部分给出管理线程栈的代码示例,第二部分对代码进行讲解,第三部分给出运行结果. 一 代码示例 本例程利用线程的属性对象,获取栈的大小,并改变栈的大小.

学习pthreads,使用互斥量进行同步

在进行多线程编程时,我们总会遇到全局变量和数据结构的问题,这是多线程之间进行通信的问题.如果多个线程同时读写一个全局变量,那么会造成竞争或者出错.为了解决这一问题,我们需要对全局数据进行,使用互斥量实现锁的机制,当某个线程在某个操作前进行了加锁,那么某个操作只能在这个线程进行,直至将锁去除,相当于在这里将多线程的并行变成了串行.本文重点学习如何使用互斥量进行全局数据的同步,分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分给出运行结果. 一.代码示例 该程序使用4个线程实现两个

学习pthreads,多线程的创建和终止

在多CPU多线程的编程中,通过作者的学习发现,pthreads的运用越来越广泛,它是线程的POSIX标准,定义了创建和操作线程的一整套API.环境的配置见上一篇博文,配置好环境后只需要添加#include <pthread.h>,就可以使用pthreads的API了.本文主要介绍一下如何使用pthreads创建多线程,并终止线程.分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分给出运行结果. 一.代码示例 本程序创建了5个线程,分别输出Hello World!以及线程编号.

学习pthreads,使用属性对象创建结合线程和分离线程

当我们创建了子线程,是让它犹如脱缰之马,信步驰骋,还是如乖巧听话的孩子,时不时教导一下呢?针对这个问题,本文介绍线程的结合和分离,结构分为三个部分,第一部分给出代码示例,第二部分对代码进行讲解,第三部分是运行结果. 一 代码示例 二 代码讲解 该函数是线程执行的子函数,打印输出线程的ID和一个计算结果,然后终止线程 定义线程变量,属性对象变量和一些常见变量.属性对象变量可以根据自己的需求来设置,从而通过属性对象来设置线程的属性,在这里主要是设置线程的结合和分离属性. 对属性对象变量进行初始化,并

学习pthreads,给线程传递多个参数

上篇博文中,boss线程给其他线程传递的只有一个参数,那么假如是多个参数呢?怎么传递呢?或许你会有这样的疑问,带着这个疑问,我们进入本文的世界,这里传递多个参数,采用结构体,为什么呢?因为结构体里可以根据自己的需要定义多个成员变量,传递过程中,我们只需要将结构体传给线程就可以了.本文分为两部分,第一部分给出代码示例,第二部分给出运行结果. 一.代码示例 二.运行结果 学习pthreads,给线程传递多个参数

Qt多线程学习:创建多线程

[为什么要用多线程?] 传统的图形用户界面应用程序都仅仅有一个运行线程,而且一次仅仅运行一个操作.假设用户从用户界面中调用一个比較耗时的操作,当该操作正在运行时,用户界面一般会冻结而不再响应.这个问题能够用事件处理和多线程来解决. [Linux有线程的概念吗?] 传统的UNIX系统也支持线程的概念,但一个进程里仅仅同意有一个线程,这样多线程就是多进程.Linux下的Posix线程(pthreads)是一种轻量级的进程的移植性实现,线程的调度由内核完毕,每一个线程都有自己的编号.假设使用线程,整体

linux和android端的pthread学习

本文起初主要想写个演示样例实測下pthread_mutex_lock和pthread_mutex_trylock差别.在linux机器上非常快就over了,可是想了一下.pthread是unix系的,在windows没办法直接执行代码非常不方便.于是想到了android,windows上安装ndk,手机root就能够跑pthread代码咯... demo lock和trylock的差别也非常好理解:,前者是堵塞的.死等知道相互排斥锁被释放:而后者则更加灵活.浅尝辄止.做个尝试不行则干其它事情去.

第十二周学习总结

信息安全系统设计基础第十三周学习总结 [学习时间:5小时] [学习内容:CHAPTER12——并发编程] 一.课本知识点梳理 1.并发 概念:只要逻辑控制流在时间上重叠,那么就可以称为并发. 意义: 访问慢速设备(如I/O设备) 与人交互:每次用户进行某种操作的请求的时候,一个独立的逻辑并发流被用来处理这个程序. 通过推迟工作来降低延迟 服务多个网络客户端 进程:每个逻辑控制流都是一个进程,由内核进行调度和维护.进程间的通信也必须有显式的通信机制. I/O多路复用:在并发编程中,一个程序在上下文