#include <pthread.h>#include <stdio.h>pthread_key_t key;void* thread_func(void* arg){ int* value = (int*)arg; pthread_setspecific(key, value); // 设置线程特定数据 printf("thread %lu: value=%d\n", pthread_self(), *value); return NULL;}int main(){ pthread_t tid1, tid2; int value1 = 1, value2 = 2; pthread_key_create(&key, NULL); // 创建线程特定数据的键 pthread_create(&tid1, NULL, thread_func, &value1); pthread_create(&tid2, NULL, thread_func, &value2); pthread_join(tid1, NULL); pthread_join(tid2, NULL); pthread_key_delete(key); // 删除线程特定数据的键 return 0;}
时间: 2023-08-16 14:08:41 浏览: 81
基于微信小程序的校园论坛;微信小程序;云开发;云数据库;云储存;云函数;纯JS无后台;全部资料+详细文档+高分项目.zip
这是一个使用 pthread 库创建线程,并且在线程中使用 pthread_key_create 和 pthread_setspecific 函数设置线程特定数据的示例程序。具体来说,该程序创建了一个类型为 pthread_key_t 的键 key,用于存储线程特定数据。然后,它创建了两个线程 tid1 和 tid2,并将它们分别绑定到值为 value1 和 value2 的线程特定数据上。最后,它等待这两个线程结束,并删除线程特定数据的键 key。
运行结果会输出两个线程的线程 ID 和它们绑定的线程特定数据的值,如下所示:
```
thread [线程1 ID]: value=[线程1绑定的数据]
thread [线程2 ID]: value=[线程2绑定的数据]
```
阅读全文