mutex is null!
时间: 2023-06-15 22:03:03 浏览: 45
这个错误一般是因为你在对一个未初始化的 mutex 进行加锁或解锁操作。要解决这个问题,你需要在使用 mutex 之前先进行初始化,例如使用 pthread_mutex_init 函数对 mutex 进行初始化。如果你已经初始化了 mutex,那么这个错误可能是因为你在多个线程中同时对同一个 mutex 进行加锁或解锁操作,导致出现竞态条件。此时,你可以考虑使用条件变量等同步机制来避免竞态条件的发生。
相关问题
linux 编程中出现中断 [send_mutex_lock()]:[128]: mutex is null!
这个错误提示表明在调用 send_mutex_lock() 函数时,传入的 mutex 参数为 NULL,因此无法对 NULL 进行加锁操作。需要检查代码中是否正确地初始化了 mutex 变量,并在调用 send_mutex_lock() 函数前,确保 mutex 变量已经被正确地赋值。如果 mutex 变量在调用 send_mutex_lock() 函数前没有被正确地初始化,则需要对其进行初始化。
分析代码功能#include"ch7.h" void*add(void*arg); long longinti=0; pthread_mutex _t i_mutex; int main(void) { pthread_attr_t threadattr; pthread_attr_init(&threadattr); pthread_t tid_addl,tid_add2,tid_add3,tid_add4,tid_add5; if ((pthread_mutex_init(&i_mutex,NULL))!=0) { fprintf(stderr,"Couldn't initialize mutex\n"); return l; } pthread_create(&tid_addl,&threadattr,add,NULL); pthread_create(&tid_add2,&threadattr,add,NULL); pthread_create(&tid_add3,&threadattr,add,NULL); pthread_create(&tid_add4,&threadattr,add,NULL); pthread_create(&tid_add5,&threadattr,add,NULL); pthread_join(tid_add1,NULL); pthread_join(tid_add2,NULL); pthread_join(tid_add3,NULL); pthread_join(tid_add4,NULL); pthread_join(tid_add5,NULL); printf("Sum is %ld\n",i); if ((pthread_mutex_destroy(&i_mutex))!=0) { fprintf(stderr,"Couldn't initialize mutex\n"); return 1; } }
这段代码是一个多线程程序,主要实现了多个线程同时对一个变量进行加操作,并最终输出加操作后的结果。具体实现方式是:创建了5个线程,每个线程都调用了同一个函数add(),并且传入的参数为NULL。在add()函数中,首先使用pthread_mutex_lock()加锁,然后对全局变量inti进行加1操作,并最后使用pthread_mutex_unlock()解锁。最后,主线程使用pthread_join()等待5个线程的结束,并输出加操作后的结果。同时,还使用pthread_mutex_init()和pthread_mutex_destroy()初始化和销毁了一个互斥锁i_mutex,保证了多个线程对同一个变量的操作的线程安全性。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)