使用pthread_create传一个int类型参数
时间: 2023-09-14 18:07:51 浏览: 85
使用pthread_create传递一个int类型参数的方法可以有两种。
第一种方法是将int类型参数强制转换为void指针类型传递,然后在线程函数中再将void指针类型转换为int类型。这样可以避免报警问题。例如,在代码中可以使用以下方式传递int类型参数:
```c
int arg = 10;
pthread_create(&thread, &threadAttr, PthreadTest, (void *)(long)arg);
```
然后在PthreadTest函数中将参数转换回int类型:
```c
int param = (int)(long)(arg);
```
这样就可以正确地传递和使用int类型参数了。
第二种方法是使用intptr_t类型来传递int类型参数。intptr_t是一种整数类型,可以保证和指针类型有相同的大小。在代码中可以使用以下方式传递int类型参数:
```c
int arg = 10;
pthread_create(&thread, &threadAttr, PthreadTest, (void *)(intptr_t)arg);
```
然后在PthreadTest函数中将参数转换回int类型:
```c
int param = (int)(intptr_t)(arg);
```
这样也可以正确地传递和使用int类型参数,并且不会出现警告问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [Linux多线程编程pthread_create传参的问题](https://blog.csdn.net/hexf9632/article/details/130853933)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [Linux线程:创建(pthread_create),等待(pthread_join),退出(pthread_exit)](https://blog.csdn.net/m0_74985965/article/details/128815940)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
阅读全文