pthread_hw.c

来自「简单的多线程程序」· C语言 代码 · 共 72 行

C
72
字号
#include <stdio.h>#include <pthread.h>#include <sched.h>pthread_mutex_t mutex;struct timespec delay;voidptr_key (void){  pthread_key_t mykeyt;  int par = 5;  printf ("the value got from key is:%d\n", par);}voidthread_obj (int prior){  int j = 2, i, k = 2;  pthread_key_t mykey;  pthread_key_create (&mykey, NULL);  pthread_setspecific (mykey, &j);  j = prior + 4;  printf ("The pthread process number is:%d\n", k);  ptr_key ();  usleep (20000);  for (i = 0; i < 10; i++)    {      if (i % 2 == 1)	{	  pthread_mutex_lock (&mutex);	  printf ("%d:%d\n", k, i);	  pthread_mutex_unlock (&mutex);	  usleep (50000);	  // pthread_delay_np(&delay);	}    }  // printf("the pthread priority is:%d\n",prior);}intmain (void){  pthread_t id;  pthread_attr_t attr;  struct sched_param param;  int i = 0, ret, k = 1;  delay.tv_sec = 2;  delay.tv_nsec = 0;  pthread_attr_init (&attr);  pthread_attr_getschedparam (&attr, &param);  pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM);  printf ("The main process number is:%d\n", k);  ret =    pthread_create (&id, &attr, (void *) thread_obj,		    (int) param.sched_priority);  if (ret != 0)    printf ("create pthread error\n");  for (i = 0; i < 10; i++)    {      if (i % 2 == 0)	{	  pthread_mutex_lock (&mutex);	  printf ("%d:%d\n", k, i);	  pthread_mutex_unlock (&mutex);	  usleep (50000);	  //pthread_delay_np(&delay);	}    }  pthread_join (id, NULL);  printf ("this is end  program\n");  return (0);}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?