thread_1

#include <stdlib.h>
 #include <pthread.h>
  #include <stdio.h>
 #include <string.h>
 void * start_routine(void *arg)
 {
         char * a;
        printf("thread runing,%s\n", (char *)arg);
        a = malloc(sizeof(char)*6);
        memset(a, ‘a‘, 5);
       a[5] = ‘\0‘;
       pthread_exit((void *)a);
       //return (void *)a;
 }
 int main(int argc, char *argv[])
 {
         pthread_t  tid;
        char c[4], *d;
        memset(c, ‘c‘, 3);
        c[3] = ‘\0‘;
        pthread_create(&tid, NULL, start_routine, (void *)c);
         printf("pthread id :%u\n", tid);
        pthread_join(tid, (void **)&d);
         printf("main: %s\n", d);
        free(d);
         return 0;
 }  

/*pthread_join一般是主线程来调用,用来等待子线程退出,
因为是等待,所以是阻塞的,一般主线程会依次
join所有它创建的子线程。
pthread_exit一般是子线程调用,用来结束当前线程。
子线程可以通过pthread_exit传递一个返回值,
而主线程通过pthread_join获得该返回值,
从而判断该子线程的退出是正常还是异常。
*/
//查阅线程的退出方式   
时间: 2024-10-12 21:48:16

thread_1的相关文章

Java中获取路径的方法_自我分析

就目前的我来说最常用的两种获取路径的方法是  class.getRecource(filename) 和 class.getclassloader.getRecource(filename) 这两者的区别其实很简单就是路径的时候有点不同,这里主要讲两个参数,其他的路径获取,其他的话在根据相对路径逐一查找就行了 class.getRecource(filename): 参数"/" 表示获取根目录; (即我们常用到的bin目录[字节码文件存放的目录] " "  表示获取

线程变量

__thread int my_var = 6; #if T_DESC("global", 1) pid_t gettid(void) { return syscall(SYS_gettid); } #endif #if T_DESC("TU1", 1) void thread_1(void) { int i; for(i=0; i<10; i++) { printf("thread_1: pid=0x%x tid=0x%x self=0x%x\n&

线程创建代码

#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <string.h> #include <sys/syscall.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #ifndef T_DESC #define T_DESC(x, y) (y) #end

信号量用于线程或进程间同步

#include <stdio.h> #include <stdlib.h> #include <pthread.h> #include <string.h> #include <sys/syscall.h> #include <unistd.h> #include <fcntl.h> #include <errno.h> #include <semaphore.h> #ifndef T_DESC

使用 ACE 库框架在 UNIX 中开发高性能并发应用

使用 ACE 库框架在 UNIX 中开发高性能并发应用来源:developerWorks 中国 作者:Arpan Sen ACE 开放源码工具包可以帮助开发人员创建健壮的可移植多线程应用程序.本文讨论创建使用 ACE 线程的应用程序的一些方法.Adaptive Communication Environment (ACE) 是一个高性能.开放源码.面向对象的框架和 C++ 类库,它有助于简化网络应用程序的开发.ACE 工具包包括一个操作系统层和一个封装网络 API 的 C++ 外观(facade

centos使用boost过程

1. 安装gcc,g++,make等开发环境 yum groupinstall "Development Tools" 2. 安装boost  yum install boost boost-devel boost-doc 注意:默认的安装路径在/usr/lib64目录下 #include <boost/thread.hpp> #include <iostream> void task1() { // do stuff std::cout << &q

centos(x86 64位系统)使用boost

1. 安装gcc,g++,make等开发环境 yum groupinstall "Development Tools" 2. 安装boost yum install boost boost-devel boost-doc 备注:默认的安装路径在/usr/lib64目录下 3. 例子 #include <boost/thread.hpp> #include <iostream> void task1() { // do stuff std::cout <&l

小圣求职记(1):腾讯篇

笔试 参加了实习和校招两场笔试,笔试题目难度中等,涉及计算机网络.操作系统.数据库.算法和数据结构.C/C++语法.下面是2014年9月份武汉地区软件研发类的题目和我的解答(事后做的,我是在合肥中科大参加的腾讯笔试,题目不一样): 一.不定项选择题 1. 如果MyClass为一个类,执行“MyClass a[5],*b[6]”语言会自动调用该类构造函数的次数是() A. 2 B.5 C. 4 D. 9 解析:选B,5次.只有a[5]定义了5个对象,而*b[6]定义的是6个对象指针并不会进行实例化

Android多线程研究(3)——线程同步和互斥及死锁

为什么会有线程同步的概念呢?为什么要同步?什么是线程同步?先看一段代码: package com.maso.test; public class ThreadTest2 implements Runnable{ private TestObj testObj = new TestObj(); public static void main(String[] args) { ThreadTest2 tt = new ThreadTest2(); Thread t1 = new Thread(tt,