Hiển thị kết quả từ 1 đến 2 / 2
  1. #1
    Tham gia
    26-09-2008
    Bài viết
    1
    Like
    0
    Thanked 0 Times in 0 Posts

    Các pro giúp em chạy đoạn code peterson đây với! e mò mẫm 2-3 ngày mà không hiểu lỗi gì!

    #include<stdio.h>
    #include<pthread.h>
    #include<stdlib.h>
    #include<time.h>
    #include<stdint.h>
    int flag[2];
    int victim;
    int sharedCounter=0;

    void lock(int me)
    {
    int other;
    other = 1-me;
    flag[me] = 1;
    victim = me;
    while(flag[other]==1 && victim == me)
    {
    }
    }

    void unlock(int me)
    {
    flag[me]=0;
    }

    void *peterson(void *ptr)
    {
    int tId,i;
    tId = (int ) (intptr_t) ptr;
    for(i=0;i<200;i++)
    {
    lock(tId);
    sharedCounter++;
    printf("%d\t",sharedCounter);
    sleep(1/10);
    unlock(tId);
    }
    }

    main()
    {
    int i;
    for(i=0;i<2;i++)
    {
    flag[i]= 0;
    }
    pthread_t t[2];
    for(i=0;i<2;i++)
    {
    pthread_create(&t[i],NULL,peterson,(void *) (intptr_t) i);
    }

    for(i=0;i<2;i++)
    {
    pthread_join(t[i],NULL);
    }
    printf("shared Counter:%d\n",sharedCounter);
    exit(0);
    }
    Quote Quote

  2. #2
    Tham gia
    19-08-2012
    Bài viết
    24
    Like
    0
    Thanked 2 Times in 2 Posts
    Việc trước tiên cần "làm ngay" là bạn phải tự viết chương trình pthread.h và lưu nó vào folder include, hoặc "mượn" của ai đó đã có tệp tiêu đề này (còn gọi là tiền xử lý này) và nhớ copy nó vào folderr nói trên, rồi kiểm thử (test) tiếp ch/trình của bạn. Chưa có tệp tiêu đề pthread.h trong thư mục INCLUDE thì chưa bàn tiếp được.

Tags for this Thread

Bookmarks

Quy định

  • Bạn không thể tạo chủ đề mới
  • Bạn không thể trả lời bài viết
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •