C++参数类型空/void/void *

1. void f(){}

2. void f(void){}

3. void f(void *){}

1和2是相同的,表示test函数不接受任何参数,无论在c还是c++中如果函数不接受任意参数,2的方式书写是一种良好的习惯,3表示test函数接受一个指针类型的参数,无论是什么指针,只要是指针就可以传入

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是可能的实现方式: ```c++ #include <stdio.h> #include <pthread.h> #include <unistd.h> //全局互斥锁变量 extern pthread_mutex_t mutex; //全局共享变量 extern char *buffer[3]; extern int position; /************************ * 参数arg: 是线程函数参数 *************************/ void *ThreadHandler(void *arg) { // 等待互斥锁 pthread_mutex_lock(&mutex); // 检查 position 是否超过了 buffer 的长度 if (position >= 3) { // 释放互斥锁 pthread_mutex_unlock(&mutex); pthread_exit(NULL); } // 将参数 arg 存入 buffer 中 buffer[position] = (char *)arg; // 等待 1 秒钟 sleep(1); // 将 position 加一 position++; // 释放互斥锁 pthread_mutex_unlock(&mutex); pthread_exit(NULL); } ``` 在此实现中,首先使用 `pthread_mutex_lock` 函数等待互斥锁,以确保在同一时刻只有一个线程可以访问 position 和 buffer 变量。然后,检查 position 是否超过了 buffer 的长度。如果是,则说明 buffer 已满,该线程可以直接退出,释放互斥锁,以允许其他线程访问 position 和 buffer。否则,将参数 arg 存入 buffer 中,并等待 1 秒钟,模拟一些对 buffer 中数据的处理。最后,将 position 加一,释放互斥锁,并退出线程。 需要注意的是,在使用互斥锁时,应尽量减少加锁和解锁的次数,以避免死锁和性能问题。此外,也要注意不要在加锁的情况下执行长时间的操作,以允许其他线程有机会获得互斥锁并访问共享变量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值