#include <pthread.h>
#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int g_i = ;
struct stu
{
int id;
char name[];
}; void *fun(void *arg)
{
int i = ;
g_i = ;
struct stu *ps; ps = (struct stu*) arg; printf("stu:%d %s\n",ps->id,ps->name); int *p = malloc(sizeof(int));
printf("malloc p = %p\n",p); *p = ; while()
{
sleep(); if(i>)
{
printf("pthread of main exit...\n");
pthread_exit(p);//结束并返回p指针
} i++;
printf("fun run..\n");
}
return NULL;
} int main()
{
int ret;
pthread_t pth_id;
int i = ;
int *p;
struct stu *ps; ps = malloc(sizeof(struct stu));
ps->id = ;
strcpy(ps->name,"zhangsan"); ret = pthread_create(&pth_id,NULL,fun,(void *)ps);
if(ret<)
{
perror("pthread");
}
printf("pthread create over..\n"); printf("pthread join\n"); pthread_join(pth_id,(void **)&p);//接收子线程返回指针
printf("p = %p *p = %d\n",p,*p);
printf("pthread join over..\n"); free(p);
}

结果如下:

pthread create over..
pthread join
stu: zhangsan
malloc p = 0x7f604c0008c0
fun run..
fun run..
fun run..
fun run..
fun run..
fun run..
fun run..
fun run..
fun run..
fun run..
fun run..
pthread of main exit...
p = 0x7f604c0008c0 *p =
pthread join over..

Linux 线程编程3.0的更多相关文章

  1. Linux 线程编程2.0——线程同步-互斥锁

    当我们需要控制对共享资源的存取的时候,可以用一种简单的加锁的方法来控制.我们可以创建一个读/写程序,它们共用一个共享缓冲区,使用互斥锁来控制对缓冲区的存取. 函数 pthread_mutex_init ...

  2. Linux 线程编程1.0

    在编译多线程程序的时候,需要连接libpthread文件: gcc pthread.c  -o  pthread  -lpthread: 所有线程一律平等,没有父子关系,线程属于进程. 创建线程用 p ...

  3. Linux线程编程之信号处理

    前言 Linux多线程环境中的信号处理不同于进程的信号处理.一方面线程间信号处理函数的共享性使得信号处理更为复杂,另一方面普通异步信号又可转换为同步方式来简化处理. 本文首先介绍信号处理在进程中和线程 ...

  4. linux 线程编程详解

    1.线程的概念: 线程和进程有一定的相似性,通常称为轻量级的进程 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等.但同一进程中的多个线程都有自身控制流 (它 ...

  5. Linux线程编程之生产者消费者问题

    前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项.文中涉及的代码运行环境如下: 本文假定读者已具备线程同步的基础知识. 一  顺序表循环队列 1.1 ...

  6. Linux线程编程之生产者消费者问题【转】

    转自:http://www.cnblogs.com/clover-toeic/p/4029269.html 前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注 ...

  7. Linux多任务编程——线程

    线程基础 △ 由于进程的地址空间是私有的,因此在进行上下文切换时,系统开销比较大 △ 在同一个进程中创建的线程共享该进程的地址空间 △ 通常线程值得是共享相同地址空间的多个任务 △ 每个线程的私有这些 ...

  8. linux高级编程基础系列:线程间通信

    linux高级编程基础系列:线程间通信 转载:原文地址http://blog.163.com/jimking_2010/blog/static/1716015352013102510748824/ 线 ...

  9. Linux系统编程——线程私有数据

    在多线程程序中.常常要用全局变量来实现多个函数间的数据共享.因为数据空间是共享的,因此全局变量也为全部线程共同拥有. 測试代码例如以下: #include <stdio.h> #inclu ...

随机推荐

  1. win10家庭版 监听无法启动 报TNS-12560 TNS-00530

    首先win10权限问题, 搜索设置->更新和安全 ->恢复->高级启动立即重启 疑难解答-高级选项-启动设置-重启-选择“4” 按“WIN+R”组合键,输入“control user ...

  2. python 列表、元组、字典的区别

    区别: 相互转换:https://www.cnblogs.com/louis-w/p/8391147.html 一.列表 list [1,[2,'AA'],5,'orderl'] 1.任意对象的有序集 ...

  3. ViewParent 和 ViewManager

    ViewGroup 继承了 View  实现了两个接口  ViewParent 和 ViewManager 接口 ViewParent:定义了成为一个View的parent的一些“职能”,当paren ...

  4. C++ 50学习 之提高对 C++的认识

    转自Effective C++ 理解设计目标. 1.和 C 的兼容性. 2.效率. C++在效率上可以和 C 匹 敌 ---- 二者相差大约在 5%之内. 3.和传统开发工具及环境的兼容性. 4.解决 ...

  5. html语义化练习易牛课堂代码

    html <body>     <header>         <!-- 导航 -->         <nav> <a href=" ...

  6. VMware虚拟机配置端口转发(端口映射),实现远程访问【转】

    前言本文所写的远程为各个电脑在同一个网段内 本文主要详细介绍如何远程访问虚拟机里面的项目! 机器:虚拟机(装在电脑1里).电脑1(宿主机).电脑2.电脑3.电脑4.电脑n... 操作步骤: step1 ...

  7. 31. Next Permutation 返回下一个pumutation序列

    [抄题]: Implement next permutation, which rearranges numbers into the lexicographically next greater p ...

  8. 688. Knight Probability in Chessboard棋子留在棋盘上的概率

    [抄题]: On an NxN chessboard, a knight starts at the r-th row and c-th column and attempts to make exa ...

  9. [leetcode]18. 4Sum四数之和

    Given an array nums of n integers and an integer target, are there elements a, b, c, and d in nums s ...

  10. init.d目录下的文件定义

    init.d目录下存放的一些脚本一般是linux系统设定的一些服务的启动脚本. 系统在安装时装了好多服务,这里面就有很多对应的脚本. 执行这些脚本可以用来启动,停止,重启这些服务. 1.这些链接文件前 ...