Linux pthread

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <pthread.h>
#include <unistd.h>

//#######################################################
//
//	李刚
//	2016.8.17
//	pthread 线程参数传递
//
//########################################################

struct CTime{
	int id;
	char name[12];
	char Num[12];
};

void *GetThread(void *arg){
	struct CTime *t_time = (struct CTime *)arg;
//	printf("pthread_t=%d\n",(int)pthread_self());

	printf("%d\n" , t_time->id);
	printf("%s\n" , t_time->name);
	printf("%s\n" , t_time->Num);

	return 0;
}

void *GetInstace(void * arg){
	int* a = ((void **)arg)[0];
	float* b = ((void **)arg)[1];
	char* c = ((void **)arg)[2];

	printf("this is thread:  %d,  %.3f,  %s\n", *a, *b, c);

	return 0;
}

int main(int argc, char*argv[]){
	pthread_t tid;
	int err = 0;
	pthread_attr_t attr;
	struct CTime t_time;
	int a = 12;
	float b = 23.5f;
	char c[] = "hello,world";

	void *arg[3] = {&a, &b, c}; // 

	t_time.id =12;
	memcpy(t_time.name, "tom json", sizeof("tom json"));
	memcpy(t_time.Num, "1234567", sizeof("1234567"));	

	pthread_attr_init(&attr); //
	if((err = pthread_create(&tid, &attr, &GetThread, (void *) &t_time)) != 0)
		printf("Error err = %d\n", err);

	pthread_join(tid, NULL);

	if((err = pthread_create(&tid, &attr, &GetInstace, (void *) arg)) != 0)
		printf("Error \n");

	pthread_join(tid, NULL);

		return 0;
}

  

时间: 2024-08-07 17:01:48

Linux pthread的相关文章

linux pthread多线程编程模板

pthread_create() 创建线程,pthread_join()让线程一直运行下去. 链接时要加上-lpthread选项. pthread_create中, 第三个参数为线程函数,定义如下: void * heartbeat_thread() { ... } 下面是main.c : #include <pthread.h> pthread_t thread[MAX_THREAD_NUM]; pthread_mutex_t cache_mutex; pthread_mutex_t var

linux pthread【转】

转自:http://www.cnblogs.com/alanhu/articles/4748943.html Posix线程编程指南(1) 内容:  一. 线程创建  二.线程取消 关于作者  线程创建与取消  杨沙洲([email protected])  2001 年 10 月 这是一个关于Posix线程编程的专栏.作者在阐明概念的基础上,将向您详细讲述Posix线程库API.本文是第一篇将向您讲述线程的创建与取消.   一. 线程创建 1.1 线程与进程  相对进程而言,线程是一个更加接近

linux pthread和java thread的是/非守护线程的行为

pthread_xxx 的函数并没有直接提供设置一个pthread为守护线程的api 而pthread_attr_init() 和 struct pthread_attr_t 也并没有提供 线程是否被设置为守护线程的成员变量 但java 的线程对象有 setDaemon() 方法将线程设置为守护线程 那我们看看java的Thread的native层是如何实现该变量的功能的 void Thread::CreateNativeThread(JNIEnv* env, jobject java_peer

linux pthread pthread_create pthread_join pthread_detach

linux 下面默认 pthread_create 由调用者自己负责子线程的资源回收 当父线程退出时候,子线程也会跟着退出,所以父线程推出的时候要调用pthread_join函数阻塞等待子线程的退出 pthread_detach( tid)  使线程tid 的线程处于分离状态,线程处于分离状态是该线程终止的时候资源被回收,不然的话该终止的子线程会占用系统资源直到父线程调用pthread_join 1 父线程先与子线程终止 此时: 如果子线程已近与父线程分离,如调用pthread_datach ,

Linux下进程的同步互斥实例——生产者消费者

linux下的同步和互斥 Linux sync_mutex 看的更舒服点的版本= = https://github.com/Svtter/MyBlog/blob/master/Linux/pthread/Linux_producer_consumer.md Semaphore.h 一份好文档,胜读十年书 本文参考了诸多资料,百度百科,cplusplus等 首先介绍一个头文件 #include <semaphore.h> 这里面包含了大多数的所需要使用的信号量. 包含: int sem_init

socket在windows下和linux下的区别

windows到Linux代码移植遇到的问题 1.一些常用函数的移植 http://www.vckbase.com/document/viewdoc/?id=1586 2.网络 ------ 转载 & 修改(待整理) socket相关程序从windows移植到linux下需要注意的 1)头文件 windows下winsock.h/winsock2.h linux下sys/socket.h 错误处理:errno.h 2)初始化 windows下需要用WSAStartup linux下不需要 3)关

Linux 的多线程编程的高效开发经验(转)

http://www.ibm.com/developerworks/cn/linux/l-cn-mthreadps/ 背景 Linux 平台上的多线程程序开发相对应其他平台(比如 Windows)的多线程 API 有一些细微和隐晦的差别.不注意这些 Linux 上的一些开发陷阱,常常会导致程序问题不穷,死锁不断.本文中我们从 5 个方面总结出 Linux 多线程编程上的问题,并分别引出相关改善的开发经验,用以避免这些的陷阱.我们希望这些经验可以帮助读者们能更好更快的熟悉 Linux 平台的多线程

windows 与 linux 多线程对应函数

对象 操作 Linux Pthread API Windows SDK 库对应 API 线程 创建 pthread_create CreateThread 退出 pthread_exit ThreadExit 等待 pthread_join WaitForSingleObject 互斥锁 创建 pthread_mutex_init CreateMutex 销毁 pthread_mutex_destroy CloseHandle 加锁 pthread_mutex_lock WaitForSingl

Windows Socket和Linux Socket编程的区别 ZZ

socket相关程序从Windows移植到Linux下需要注意的: 1)头文件 Windows下winsock.h/winsock2.h Linux下sys/socket.h 错误处理:errno.h 2)初始化 Windows下需要用WSAStartup Linux下不需要 3)关闭socket Windows下closesocket(...) Linux下close(...) 4)类型 Windows下SOCKET Linux下int 如我用到的一些宏: #ifdef WIN32 typed