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
分享到:
相关推荐
1. `pthread_create()`:创建一个新的线程,传入线程函数和参数,返回新线程的ID。 2. `pthread_join()`:等待指定线程结束并回收其资源。这是同步原语,用于避免线程间的竞态条件。 3. `pthread_exit()`:线程...
`pthread_create` 用于创建新线程,`pthread_join` 用于等待新线程结束。 总结来说,`pthread_self` 是一个多线程编程中的重要工具,它提供了一种方式来标识和区分系统中的不同线程,使得我们能够有效地管理和协调...
本文将深入探讨“pthread(arm_linux).zip”这个压缩包中的ARM Linux线程编程知识,它提供了适用于ARM平台的线程编程实例,帮助开发者掌握这一领域的核心技能。 首先,我们要了解pthread,它是POSIX线程(Portable ...
`pthread_create()`函数用于创建新线程,`pthread_join()`函数用于等待线程结束,`pthread_exit()`用于线程退出。在“tcp_pthread_server”代码中,可以看到这些函数的使用,实现线程的创建、运行和销毁。 四、...
在这个“pthread代码实例”中,我们将深入理解pthread的使用,并通过实际的代码示例来学习如何在C语言环境下创建、管理以及同步线程。 1. **线程创建**:pthread库的核心函数`pthread_create()`用于创建新的线程。...
2. **POSIX线程(pthread)**:pthread API 提供了一组函数,如 `pthread_create`、`pthread_join`、`pthread_mutex` 等,用于在C语言中创建和管理线程。它是跨平台的,可以在多种UNIX-like系统上使用。 3. **线程...
1. `pthread_create()`: 创建新的线程,传入线程函数指针和参数。 2. `pthread_join()`: 等待指定线程结束,获取其返回值。 3. `pthread_exit()`: 结束当前线程并返回一个状态码。 4. `pthread_self()`: 获取当前...
pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED); if (pthread_create(&thread_id, &attr, thread_function, NULL) == 0) { printf("Detached thread created successfully.\n"); } else { ...
其中,第一个参数是需要实例的 pthread_key_t 变量,第二个参数是销毁函数,此参数是可选的,当为 NULL 则系统调用默认的销毁函数进行相关数据的销毁,如果不为 NULL,则在线程退出的时候,将 key 关联的数据作为...
1. **线程创建**:`pthread_create()`函数是创建新线程的关键,它接受一个线程标识符指针、线程属性、线程入口点函数和传递给该函数的参数。通过这个函数,我们可以定义线程的执行行为。 2. **线程同步**:在多线程...
`pthread_create(&thread[0], NULL, thread1, NULL)`和`pthread_create(&thread[1], NULL, thread2, NULL)`分别创建了两个线程,其中`thread1`和`thread2`是线程的入口函数,`NULL`参数表示它们不继承父线程的属性。...
本文将深入探讨如何使用pthread库实现线程管理和同步,并提供两个版本的线程库实例代码供学习参考。 首先,让我们来理解pthread库。pthread是POSIX线程库的简称,它是跨平台的,用于支持多线程编程。在Unix-like...
2. **POSIX线程API**:Pthreads提供了一套标准C语言接口,包括`pthread_create()`、`pthread_join()`、`pthread_exit()`等函数,用于创建、同步和管理线程。 3. **线程创建**:`pthread_create()`函数用于创建新的...
在`thread_create`函数中,使用`pthread_create`创建两个线程。`pthread_create`的第一个参数是线程标识符的地址,第二个参数是线程属性(这里设为NULL表示使用默认属性),第三个参数是线程函数的指针,第四个参数...
Linux上的线程API主要包括`pthread_create`用于创建线程,`pthread_exit`用于线程退出,`pthread_join`用于等待线程结束,以及`pthread_cancel`用于取消线程。互斥锁由`pthread_mutex_init`和`pthread_mutex_...
在Linux系统中,线程的创建和管理通过系统调用如`pthread_create`和`pthread_join`等来实现。 二、Linux多线程的创建 Linux系统使用POSIX线程库(pthread),提供了一套标准的接口用于线程的创建、销毁和管理。创建...
`pthread_create()`函数用于创建新的线程,它需要传递线程ID、线程属性、线程启动函数以及传递给该函数的参数。线程启动函数是新线程执行的入口点。 2. **线程函数**: 新创建的线程将执行由`pthread_create()`...
pthread_create(&writer_tid, NULL, writer_thread, NULL); // 等待线程结束 pthread_join(reader_tid, NULL); pthread_join(writer_tid, NULL); // 销毁读写锁 pthread_rwlock_destroy(&global_rwlock); ...
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`:设置...