首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 操作系统 > UNIXLINUX >

新手互斥锁添加有关问题

2012-03-22 
新手求助互斥锁添加问题题目要求是包含两个进程的线程,一个线程完成累加,另一个用于接收字符并回显,其中有

新手求助互斥锁添加问题
题目要求是包含两个进程的线程,一个线程完成累加,另一个用于接收字符并回显,其中有道小题是用互斥锁实现互斥并说明原理。原理我知道是因为两个线程没互斥而导致第一个线程时间片用完却没执行,第二个线程执行并改变x的值,但是互斥锁我没学过怎么用,所以请大家帮忙
我的两个线程代码已经写完了
#include<stdio.h>
#include<pthread.h>
int x=1,sum;
void sumx(void)
{
  int i=0;
  printf("进程1开始\n");
  for(i=0;i<1000000000;i++)
  {
  sum=sum+x;
  }
  printf("sum=%d\n",sum);
}
void setx(void)
{
  printf("线程2开始");
  x=0;
  printf("线程2结束");
}

我知道线程1加锁和解锁在for语句前后就可以,但是互斥定义和初始化我不太会,大家谁教教我

[解决办法]

C/C++ code
#include<stdio.h>#include<pthread.h>int x=1,sum;pthread_mutex_t m_CS;void sumx(void){    pthread_mutex_lock( &m_CS );    int i=0;    printf("进程1开始\n");    for(i=0;i<1000000000;i++)    {        sum=sum+x;    }    printf("sum=%d\n",sum);    pthread_mutex_unlock( &m_CS );}void setx(void){    pthread_mutex_lock( &m_CS );    printf("线程2开始");    x=0;    printf("线程2结束");    pthread_mutex_unlock( &m_CS );}int main(){    pthread_mutex_init( &m_CS, NULL );    //之后创建2个线程    //线程都结束后    pthread_mutex_destroy( &m_CS );    return 0;} 

热点排行