Пример #1
0
void * foo(void * pArgs)
{
  int thread_number = *(int*)pArgs;
  printf("number:%d\n",thread_number);
  printf("entered foo\n");
  printf("number: %d\n",thread_number);
  while (true)
    {
      printf("entered while in foo\n");
      int check = getbusy(thread_number);
      printf("after getbusy in while in foo\n");
      printf("after while in while in foo\n");
      printf("number: %d\n",thread_number);
      printf("########################check state is: %d\n",check);

      if (check == 1)
      {
        printf("number:%d\n",thread_number);
        printf("after printf args\n");
        setbusy(thread_number);
        printf("after setbusy\n");
      }
      if (check == 2)
      {
        printf("\n\nclose thread %d\n\n",thread_number);
        pthread_exit(0);
      }
      if (check == 0)
      {
        printf("idling\n");
        sleep(1);
      }
    }
  return 0;
}
Пример #2
0
void
markbusy(daddr_t block, long count)
{
	register int i;

	count = roundup(count, secsize) / secsize;
	for (i = 0; i < count; i++, block++) {
		if ((unsigned)block > part_len) {
			pwarn(gettext("Block %lx out of range\n"), block);
			break;
		}
		if (testbusy(block))
			pwarn(gettext("Dup block %lx\n"), block);
		else {
			n_blks++;
			setbusy(block);
		}
	}
}
Пример #3
0
int main(int argc, char * argv[])
{
  printf("entered main\n");
  pthread_t threads[NUM_THREADS] = { 0 };
  printf("after threads\n");
  int pthreads[NUM_THREADS] = { 1,2,3 };

  int creator;
  printf("after creator\n");

  for (creator = 0;creator < NUM_THREADS;creator++)
    {
      printf("in for iteration:%d\n",creator+1);
      if(!pthread_create(&(threads[creator]),0,foo,(void*)(&(pthreads[creator]))))
        {
          perror("pthread_create");
        }
      printf("after pthread_create\n");
    }
  for (creator = 0;creator < NUM_THREADS;creator++)
    {
      printf("threads element #%d is %d\n",creator,(threads[creator]));
    }
  printf("after for\n");
  setbusy(1);
  printf("after setbusy 1 0\n");
  setbusy(2);
  printf("after setbusy 2 0\n");
  setbusy(1);
  printf("after setbusy 1 1\n");
  setbusy(2);
  printf("after setbusy 2 1\n");
  setbusy(3);
  printf("after setbusy 3 0\n");
  setbusy(1);
  printf("after setbusy 1 2\n");
  setbusy(2);
  printf("after setbusy 2 2\n");
  setbusy(3);
  printf("after setbusy 3 1\n");
  printf("after exitProgram\n");
  exitProgram();
  //sleep(15);
  for (creator = 0;creator < NUM_THREADS;creator++)
    {
      pthread_join(threads[creator],0);
    }

  setbusy(2);
  printf("after setbusy 2 3\n");
  setbusy(3);
  printf("after setbusy 3 2\n");
  setbusy(1);
  printf("after setbusy 1 3\n");

  printf("right before last thing in main\n");
  return 0;
}