参考出处:http://www.cnblogs.com/skynet/archive/2010/10/30/1865267.html

1、进程与线程

进程是程序代码在系统中的具体实现。进程是拥有所需资源和执行方案的集合。

线程是进程中划分出的可独立执行的一个控制流程。

两者区别:

每个进程有各自独立的地址空间。进程崩溃不会影响到其他进程。

所有线程共享同一进程的资源,除了局部变量和堆之外。线程的崩溃会导致所在进程的挂起。

#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
#include <errno.h>
#include <unistd.h> int g_Flag = ; void* thread1( void* );
void* thread2( void* ); int main( int argc, char* argv[] )
{
printf(" Enter main\n "); pthread_t tid1, tid2;
int rc1 = ;
int rc2 = ; rc2 = pthread_create( &tid2, NULL, thread2, NULL );
if ( != rc2 )
{
printf("%s: %d\n", __func__, strerror(rc2) );
} rc1 = pthread_create( &tid1, NULL, thread1, NULL );
if ( != rc1 )
{
printf( "%s: %d\n", __func__, strerror( rc1 ) );
}
printf( "leave main\n" ); getchar(); exit( );
} void* thread1( void* arg )
{
printf( "Enter thread1\n" );
printf( "This is thread1, g_Flag : %d, thread id is %u\n", g_Flag, ( unsigned int )pthread_self() );
g_Flag = ;
printf( "This is thread1, g_Flag : %d, thread_id is %u\n", g_Flag, ( unsigned int )pthread_self() );
printf( "leave thread\n" );
pthread_exit( );
} void* thread2( void* arg )
{
printf( "Enter thread2\n" );
printf( "This is thread2, g_Flag : %d, thread_id is %u\n", g_Flag, (unsigned int )pthread_self() );
g_Flag = ;
printf( "This is thread2, g_Flag :%d, thread_id is %u\n", g_Flag, (unsigned int )pthread_self() );
pthread_exit( );
}

linux 多线程基础的更多相关文章

  1. linux 多线程基础3

    一.线程属性 线程具有属性,用pthread_attr_t表示,在对该结构进行处理之前必须进行初始化,在使用后需要对其去除初始化.我们用pthread_attr_init函数对其初始化,用pthrea ...

  2. linux 多线程基础2

    6. 名称:: pthread_detach 功能: 使线程进入分离状态. 头文件: #include <pthread.h> 函数原形: int pthread_detach(pthre ...

  3. linux 多线程基础1

    一.什么是线程        在一个程序里的多个执行路线就叫做线程.更准确的定义是:线程是“一个进程内部的一个控制序列”. 典型的unix进程可以看成只有一个控制线程:一个进程在同一时刻只做一件事情. ...

  4. linux 多线程基础4

    六.线程的作用域 函数pthread_attr_setscope和pthread_attr_getscope分别用来设置和得到线程的作用域,这两个函数的定义如下: 7. 名称:: pthread_at ...

  5. c++linux多线程基础知识

    http://blog.csdn.net/lovecodeless/article/details/24929273 http://blog.csdn.net/Jiangweihll/article/ ...

  6. Linux多线程与同步

    作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 典型的UNIX系统都支持一个进程创建多个线程(thread).在Linux进程基础 ...

  7. 《Linux多线程服务端编程:使用muduo C++网络库》上市半年重印两次,总印数达到了9000册

    <Linux多线程服务端编程:使用muduo C++网络库>这本书自今年一月上市以来,半年之内已经重印两次(加上首印,一共是三次印刷),总印数达到了9000册,这在技术书里已经算是相当不错 ...

  8. Kali Linux渗透基础知识整理(二)漏洞扫描

    Kali Linux渗透基础知识整理系列文章回顾 漏洞扫描 网络流量 Nmap Hping3 Nessus whatweb DirBuster joomscan WPScan 网络流量 网络流量就是网 ...

  9. 推荐《Linux 多线程服务器端编程》

    赖勇浩(http://laiyonghao.com) 最近,有一位朋友因为工作需要,需要从网游的客户端编程转向服务器端编程,找我推荐一本书.我推荐了<Linux 多线程服务器端编程——使用 mu ...

随机推荐

  1. 应用市场中包名(package name)的唯一性

    一般的应用商店,在开发者上传应用(APP)的时候,都会对应用的包名进行唯一性的校验.如果此时,用户上传的应用的包名与数据库中的已有的APP的包名一样,那么正常情况下,该应用就不能上传,而弹出提示说,该 ...

  2. Eclipse下载与安装

    有很多小伙伴不知道eclipse在哪里下载以及怎么安装的,那我来给大家做个演示吧. 学习java比较常用的软件就是eclipse,而eclipse安装后并不能马上使用,还需要安装jdk并搭建环境.下面 ...

  3. ajaxform使用

    需要引入  jquery.form.js  jquery.js 1.提交的表单 <form id="myForm" action="comment.php" ...

  4. 查看openssl的版本

    [root@ha01 tengine]# openssl version -a OpenSSL Feb built on: Thu Jul :: UTC platform: linux-x86_64 ...

  5. tif文件导入postgresql

    raster2pgsql -I -F -N -999  文件名  数据库名 | psql -U postgres -d postgres

  6. [leetcode]leetcode初体验

    这几天把之前的设计模式回顾了一遍,整理了一点以前的项目.同学说,打算刷leetcode题目,也勾起了我的兴趣,索性也刷一些题目,再提高一些内功.刚开始进去,leetcode随机分配的题目,直接也就做了 ...

  7. Remove Duplicates from Sorted Array II

    题目简述 Follow up for "Remove Duplicates": What if duplicates are allowed at most twice? For ...

  8. 图文介绍如何在Eclipse统计代码行数(转)

    使用Eclipse可以方便的统计工程或文件的代码行数,方法如下: 1.点击要统计的项目或许文件夹,在菜单栏点击Search,然后点击File... 2.选中正则表达式(Regular expressi ...

  9. Andriod学习笔记5:通过NDK在C++中实现日志输出

    开发环境 android studio 1.5.1 实现步骤 新建android项目 项目名称为AndroidCLog,选择Empty Activity模板,其他默认即可. 下载配置ndk 在项目上右 ...

  10. 深入理解Java:SimpleDateFormat安全的时间格式化

    这一篇我什么都不写,只推荐一篇大牛的博客,这篇博客给了我很多灵感,让我对多线程理解的更加透彻了; http://www.cnblogs.com/chenying99/articles/3331950. ...