`

pthread_create实例

 
阅读更多

pthread_create在调用成功后会返回0,否则返回一个非0值,用strerror函数可以看到错误信息。

创建5个缺省线程(即具有缺省属性的线程),打印出线程创建的序号,所在进程的id以及线程id。

main.cpp

#include<stdio.h>
#include<pthread.h>
#include<unistd.h>
#include <sys/types.h>
#include <string.h>
#include <stdlib.h>
void* st_routine(void* args){
	pid_t pid = getpid();
	pthread_t thread_id = pthread_self();
	printf("%s process id is %u; thread id is %u\n", (char*)args, (unsigned int)pid, (unsigned int)thread_id);
	return ((void*)0);
}
int main(){
	//sprintf((char*)str, "serial number is %d", 0);
	//printf("%s\n", (char*)str);
	const int n = 5; 
	pthread_t pids[n]; 		
	void* str[n];
	int err;
	for(int i = 0; i < n; i++){
		str[i] = malloc(32);
		sprintf((char*)str[i], "serial number is %d", i);
		if((err = pthread_create(pids+i, NULL, st_routine, str[i])) != 0){
			fprintf(stderr, "fail to create %dth thread, error msg:%s\n", i, strerror(err));	
		}
	}
	//需要让主线成睡眠一下,否则退出太快,pthread_create创建的线程会被
	//极早中断
	sleep(1); 
	return 0; 
}

 在终端执行如下命令即可看到效果。

g++ -pthread -o main main.cpp && ./main

 

一组输出如下:

 

serial number is 4 process id is 13202; thread id is 3042868032
serial number is 3 process id is 13202; thread id is 3051260736
serial number is 2 process id is 13202; thread id is 3059653440
serial number is 1 process id is 13202; thread id is 3068046144
serial number is 0 process id is 13202; thread id is 3076438848
 

 

分享到:
评论

相关推荐

    pthreads_pthread_

    1. `pthread_create()`:创建一个新的线程,传入线程函数和参数,返回新线程的ID。 2. `pthread_join()`:等待指定线程结束并回收其资源。这是同步原语,用于避免线程间的竞态条件。 3. `pthread_exit()`:线程...

    pthread_self获取当前调用线程的识别码

    `pthread_create` 用于创建新线程,`pthread_join` 用于等待新线程结束。 总结来说,`pthread_self` 是一个多线程编程中的重要工具,它提供了一种方式来标识和区分系统中的不同线程,使得我们能够有效地管理和协调...

    pthread(arm_linux).zip_ARM Linux_arm_arm linux pthread_arm pthre

    本文将深入探讨“pthread(arm_linux).zip”这个压缩包中的ARM Linux线程编程知识,它提供了适用于ARM平台的线程编程实例,帮助开发者掌握这一领域的核心技能。 首先,我们要了解pthread,它是POSIX线程(Portable ...

    tcp_pthread_server

    `pthread_create()`函数用于创建新线程,`pthread_join()`函数用于等待线程结束,`pthread_exit()`用于线程退出。在“tcp_pthread_server”代码中,可以看到这些函数的使用,实现线程的创建、运行和销毁。 四、...

    pthread代码实例

    在这个“pthread代码实例”中,我们将深入理解pthread的使用,并通过实际的代码示例来学习如何在C语言环境下创建、管理以及同步线程。 1. **线程创建**:pthread库的核心函数`pthread_create()`用于创建新的线程。...

    test_pthread_test_ridingnja_

    2. **POSIX线程(pthread)**:pthread API 提供了一组函数,如 `pthread_create`、`pthread_join`、`pthread_mutex` 等,用于在C语言中创建和管理线程。它是跨平台的,可以在多种UNIX-like系统上使用。 3. **线程...

    linux下C语言多线程编程实例

    1. `pthread_create()`: 创建新的线程,传入线程函数指针和参数。 2. `pthread_join()`: 等待指定线程结束,获取其返回值。 3. `pthread_exit()`: 结束当前线程并返回一个状态码。 4. `pthread_self()`: 获取当前...

    posix线程函数实例

    pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); if (pthread_create(&thread_id, &attr, thread_function, NULL) == 0) { printf("Detached thread created successfully.\n"); } else { ...

    实验二:Linux多线程创建.docx

    其中,第一个参数是需要实例的 pthread_key_t 变量,第二个参数是销毁函数,此参数是可选的,当为 NULL 则系统调用默认的销毁函数进行相关数据的销毁,如果不为 NULL,则在线程退出的时候,将 key 关联的数据作为...

    LinuxPthread实例详解及学习文档

    1. **线程创建**:`pthread_create()`函数是创建新线程的关键,它接受一个线程标识符指针、线程属性、线程入口点函数和传递给该函数的参数。通过这个函数,我们可以定义线程的执行行为。 2. **线程同步**:在多线程...

    linux下C语言多线程编程实例.pdf

    `pthread_create(&thread[0], NULL, thread1, NULL)`和`pthread_create(&thread[1], NULL, thread2, NULL)`分别创建了两个线程,其中`thread1`和`thread2`是线程的入口函数,`NULL`参数表示它们不继承父线程的属性。...

    C/C++ 学习 - 实现了两个版本的线程库实例代码

    本文将深入探讨如何使用pthread库实现线程管理和同步,并提供两个版本的线程库实例代码供学习参考。 首先,让我们来理解pthread库。pthread是POSIX线程库的简称,它是跨平台的,用于支持多线程编程。在Unix-like...

    POSIX线程编程指南(合集)

    2. **POSIX线程API**:Pthreads提供了一套标准C语言接口,包括`pthread_create()`、`pthread_join()`、`pthread_exit()`等函数,用于创建、同步和管理线程。 3. **线程创建**:`pthread_create()`函数用于创建新的...

    linux下C语言多线程编程实例.doc

    在`thread_create`函数中,使用`pthread_create`创建两个线程。`pthread_create`的第一个参数是线程标识符的地址,第二个参数是线程属性(这里设为NULL表示使用默认属性),第三个参数是线程函数的指针,第四个参数...

    linux的多线程编程的高效开发经验.pdf

    Linux上的线程API主要包括`pthread_create`用于创建线程,`pthread_exit`用于线程退出,`pthread_join`用于等待线程结束,以及`pthread_cancel`用于取消线程。互斥锁由`pthread_mutex_init`和`pthread_mutex_...

    linuxduoxiancheng.rar_Linux下 线程_linux 多线程_linux多线程

    在Linux系统中,线程的创建和管理通过系统调用如`pthread_create`和`pthread_join`等来实现。 二、Linux多线程的创建 Linux系统使用POSIX线程库(pthread),提供了一套标准的接口用于线程的创建、销毁和管理。创建...

    linux C 多线程编程典型实例

    `pthread_create()`函数用于创建新的线程,它需要传递线程ID、线程属性、线程启动函数以及传递给该函数的参数。线程启动函数是新线程执行的入口点。 2. **线程函数**: 新创建的线程将执行由`pthread_create()`...

    同步 读写锁 readwriteLock

    pthread_create(&writer_tid, NULL, writer_thread, NULL); // 等待线程结束 pthread_join(reader_tid, NULL); pthread_join(writer_tid, NULL); // 销毁读写锁 pthread_rwlock_destroy(&global_rwlock); ...

    C语言多线程编程实例[借鉴].pdf

    int pthread_create(pthread_t *thread, const pthread_attr_t *attr, void *(*start_routine) (void *), void *arg); ``` - `pthread_t *thread`:指向线程标识符的指针。 - `const pthread_attr_t *attr`:设置...

Global site tag (gtag.js) - Google Analytics