出于线程访问数据矩阵的目的,我需要一个所有线程都可以访问的互斥体矩阵,以确保一次只有一个线程可以访问某些数据(x,y)。我知道还有其他选择,但我真正需要的是这个。我尝试了一个全局指针,当我从客户端/用户收到数据矩阵的大小时,我分配了具有所述大小的互斥矩阵。没能成功...指向数组数组的指针...我的头爆炸了。这是我微不足道的尝试的一个例子。
xthread_mutex ** globalPointer;
void example_init (int x, int y) {
globalPointer = (xthread_mutex_t **)malloc(sizeof(xthread_mutex_t)* x * y);
int i, j;
for(i=0; i<x; i++){
for(j=0; j<y; j++){
globalPointer[i][j] = xthread_mutex_init();
}
}
互斥量初始化上的段错误,为什么?如果您还可以提供一些关于如何在混合指针和数组时避免混淆的提示,我将不胜感激。下面不都是一样的吗?
编辑:我很抱歉没有提到,但我正在使用“自定义”互斥锁,xthread_mutex_init(); 基本上返回一个指向已分配锁的指针(使用 pthread 锁创建)如果你没有发现任何问题,那么我猜我的错误在那些......
/* 返回一个新的、未锁定的互斥体 */
xthread_mutex_t xthread_mutex_init();