Linux 线程编程3.0
#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的更多相关文章
- Linux 线程编程2.0——线程同步-互斥锁
当我们需要控制对共享资源的存取的时候,可以用一种简单的加锁的方法来控制.我们可以创建一个读/写程序,它们共用一个共享缓冲区,使用互斥锁来控制对缓冲区的存取. 函数 pthread_mutex_init ...
- Linux 线程编程1.0
在编译多线程程序的时候,需要连接libpthread文件: gcc pthread.c -o pthread -lpthread: 所有线程一律平等,没有父子关系,线程属于进程. 创建线程用 p ...
- Linux线程编程之信号处理
前言 Linux多线程环境中的信号处理不同于进程的信号处理.一方面线程间信号处理函数的共享性使得信号处理更为复杂,另一方面普通异步信号又可转换为同步方式来简化处理. 本文首先介绍信号处理在进程中和线程 ...
- linux 线程编程详解
1.线程的概念: 线程和进程有一定的相似性,通常称为轻量级的进程 同一进程中的多条线程将共享该进程中的全部系统资源,如虚拟地址空间,文件描述符和信号处理等等.但同一进程中的多个线程都有自身控制流 (它 ...
- Linux线程编程之生产者消费者问题
前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注意的事项.文中涉及的代码运行环境如下: 本文假定读者已具备线程同步的基础知识. 一 顺序表循环队列 1.1 ...
- Linux线程编程之生产者消费者问题【转】
转自:http://www.cnblogs.com/clover-toeic/p/4029269.html 前言 本文基于顺序循环队列,给出Linux生产者/消费者问题的多线程示例,并讨论编程时需要注 ...
- Linux多任务编程——线程
线程基础 △ 由于进程的地址空间是私有的,因此在进行上下文切换时,系统开销比较大 △ 在同一个进程中创建的线程共享该进程的地址空间 △ 通常线程值得是共享相同地址空间的多个任务 △ 每个线程的私有这些 ...
- linux高级编程基础系列:线程间通信
linux高级编程基础系列:线程间通信 转载:原文地址http://blog.163.com/jimking_2010/blog/static/1716015352013102510748824/ 线 ...
- Linux系统编程——线程私有数据
在多线程程序中.常常要用全局变量来实现多个函数间的数据共享.因为数据空间是共享的,因此全局变量也为全部线程共同拥有. 測试代码例如以下: #include <stdio.h> #inclu ...
随机推荐
- vim相关
保存和传递宏 1 先建立一个宏.如上 2 在任意一个文件的空白位置normal状态下,命令"ap 即可以把宏的内容显示出来.比如说我的宏是: "ohello th id<80 ...
- PHP 设计模式(一)
基础的三种设计模式 工厂模式 为创建对象提供了一个统一的接口,好处是当被创建对象命名空间或者名称改变时,直接修改工厂的创建方法即可 <?php class Factory{ public sta ...
- 在centos上面编译安装python
前言 因为在学习storm的过程中需要安装python,storm是部署在linux上面的,所以需要将python安装在linux上面. 安装准备 python下载 官网链接:https://www. ...
- 下载安装 STS(Spring Tool Suite),推荐对应 Eclipse 版本号,适用于Windows32位(xp、2003)
sts下载地址:https://spring.io/tools/sts/legacy 虽然sts内置了版本对应的eclipse,仍推荐使用当前环境下稳定使用的eclipse版本. Start 找到ec ...
- docker报错
用docker搭建环境时可能会遇到错误:No releases available for package "xxxx" No releases available for pac ...
- 深入剖析GPU Early Z优化
最近在公司群里同事发了一个UE4关于Mask材质的优化,比如在场景中有大面积的草和树的时候,可以在很大程度上提高效率.这其中的原理就是利用了GPU的特性Early Z,但是它的做法跟我最开始的理解有些 ...
- 移动平台MOBA发热与帧率优化
MOBA项目的优化进入到了第二阶段,千元机,发热严重问题处理,及帧率进一步提升. 回顾之前的优化,当初我的 OPPO R9S不过8-10帧,后来经过了逻辑计算的一些优化后达到10-20帧. 再后来开启 ...
- javaScript+html5实现图片拖拽
源码: <!DOCTYPE html><html><head> <meta charset="utf-8"/> <title& ...
- EnterpriseLibrary
收藏一下: http://www.cnblogs.com/huangcong/archive/2010/06/01/1748672.html
- oracle用户间表数据复制迁移
如system用户要将scott中的emp表倒入其中,按如下方法: 1.登录scott用户 2.给system用户赋予查询emp标的权限: grant select on emp to system; ...