⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usrthbasic.c

📁 gdb是linux下的一个远程调试环境.能让你很方便地调试linux下的代码.
💻 C
字号:
/* OBSOLETE #include <stdio.h> *//* OBSOLETE  *//* OBSOLETE /* #include "config.h" */ *//* OBSOLETE #define HAVE_PTHREAD_H *//* OBSOLETE #define __hpux__ *//* OBSOLETE #define __osf__ *//* OBSOLETE  *//* OBSOLETE #ifndef HAVE_PTHREAD_H *//* OBSOLETE  *//* OBSOLETE /* Don't even try to compile.  In fact, cause a syntax error that we can *//* OBSOLETE    look for as a compiler error message and know that we have no pthread *//* OBSOLETE    support.  In that case we can just suppress the test completely. */ *//* OBSOLETE  *//* OBSOLETE #error "no posix threads support" *//* OBSOLETE  *//* OBSOLETE #else *//* OBSOLETE  *//* OBSOLETE /* OK.  We have the right header.  If we try to compile this and fail, then *//* OBSOLETE    there is something wrong and the user should know about it so the testsuite *//* OBSOLETE    should issue an ERROR result.. */ *//* OBSOLETE  *//* OBSOLETE #ifdef __linux__ *//* OBSOLETE #define  _MIT_POSIX_THREADS 1	/* Linux (or at least RedHat 4.0) needs this */ *//* OBSOLETE #endif *//* OBSOLETE  *//* OBSOLETE #include <pthread.h> *//* OBSOLETE  *//* OBSOLETE /* Under OSF 2.0 & 3.0 and HPUX 10, the second arg of pthread_create *//* OBSOLETE    is prototyped to be just a "pthread_attr_t", while under Solaris it *//* OBSOLETE    is a "pthread_attr_t *".  Arg! */ *//* OBSOLETE  *//* OBSOLETE #if defined (__osf__) || defined (__hpux__) *//* OBSOLETE #define PTHREAD_CREATE_ARG2(arg) arg *//* OBSOLETE #define PTHREAD_CREATE_NULL_ARG2 null_attr *//* OBSOLETE static pthread_attr_t null_attr; *//* OBSOLETE #else *//* OBSOLETE #define PTHREAD_CREATE_ARG2(arg) &arg *//* OBSOLETE #define PTHREAD_CREATE_NULL_ARG2 NULL *//* OBSOLETE #endif *//* OBSOLETE  *//* OBSOLETE static int verbose = 0; *//* OBSOLETE  *//* OBSOLETE static void *//* OBSOLETE common_routine (arg) *//* OBSOLETE      int arg; *//* OBSOLETE { *//* OBSOLETE   static int from_thread1; *//* OBSOLETE   static int from_thread2; *//* OBSOLETE   static int from_main; *//* OBSOLETE   static int hits; *//* OBSOLETE   static int full_coverage; *//* OBSOLETE  *//* OBSOLETE   if (verbose) printf("common_routine (%d)\n", arg); *//* OBSOLETE   hits++; *//* OBSOLETE   switch (arg) *//* OBSOLETE     { *//* OBSOLETE     case 0: *//* OBSOLETE       from_main++; *//* OBSOLETE       break; *//* OBSOLETE     case 1: *//* OBSOLETE       from_thread1++; *//* OBSOLETE       break; *//* OBSOLETE     case 2: *//* OBSOLETE       from_thread2++; *//* OBSOLETE       break; *//* OBSOLETE     } *//* OBSOLETE   if (from_main && from_thread1 && from_thread2) *//* OBSOLETE     full_coverage = 1; *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE static void * *//* OBSOLETE thread1 (void *arg) *//* OBSOLETE { *//* OBSOLETE   int i; *//* OBSOLETE   int z = 0; *//* OBSOLETE  *//* OBSOLETE   if (verbose) printf ("thread1 (%0x) ; pid = %d\n", arg, getpid ()); *//* OBSOLETE   for (i=1; i <= 10000000; i++) *//* OBSOLETE     { *//* OBSOLETE       if (verbose) printf("thread1 %d\n", pthread_self ()); *//* OBSOLETE       z += i; *//* OBSOLETE       common_routine (1); *//* OBSOLETE       sleep(1); *//* OBSOLETE     } *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE static void * *//* OBSOLETE thread2 (void * arg) *//* OBSOLETE { *//* OBSOLETE   int i; *//* OBSOLETE   int k = 0; *//* OBSOLETE  *//* OBSOLETE   if (verbose) printf ("thread2 (%0x) ; pid = %d\n", arg, getpid ()); *//* OBSOLETE   for (i=1; i <= 10000000; i++) *//* OBSOLETE     { *//* OBSOLETE       if (verbose) printf("thread2 %d\n", pthread_self ()); *//* OBSOLETE       k += i; *//* OBSOLETE       common_routine (2); *//* OBSOLETE       sleep(1); *//* OBSOLETE     } *//* OBSOLETE   sleep(100); *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE int *//* OBSOLETE foo (a, b, c) *//* OBSOLETE      int a, b, c; *//* OBSOLETE { *//* OBSOLETE   int d, e, f; *//* OBSOLETE  *//* OBSOLETE   if (verbose) printf("a=%d\n", a); *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE main(argc, argv) *//* OBSOLETE      int argc; *//* OBSOLETE      char **argv; *//* OBSOLETE { *//* OBSOLETE   pthread_t tid1, tid2; *//* OBSOLETE   int j; *//* OBSOLETE   int t = 0; *//* OBSOLETE   void (*xxx) (); *//* OBSOLETE   pthread_attr_t attr; *//* OBSOLETE  *//* OBSOLETE   if (verbose) printf ("pid = %d\n", getpid()); *//* OBSOLETE  *//* OBSOLETE   foo (1, 2, 3); *//* OBSOLETE  *//* OBSOLETE #ifndef __osf__ *//* OBSOLETE   if (pthread_attr_init (&attr)) *//* OBSOLETE     { *//* OBSOLETE       perror ("pthread_attr_init 1"); *//* OBSOLETE       exit (1); *//* OBSOLETE     } *//* OBSOLETE #endif *//* OBSOLETE  *//* OBSOLETE #ifdef PTHREAD_SCOPE_SYSTEM *//* OBSOLETE   if (pthread_attr_setscope (&attr, PTHREAD_SCOPE_SYSTEM)) *//* OBSOLETE     { *//* OBSOLETE       perror ("pthread_attr_setscope 1"); *//* OBSOLETE       exit (1); *//* OBSOLETE     } *//* OBSOLETE #endif *//* OBSOLETE  *//* OBSOLETE   if (pthread_create (&tid1, pthread_attr_default, thread1, (void *) 0xfeedface)) *//* OBSOLETE     { *//* OBSOLETE       perror ("pthread_create 1"); *//* OBSOLETE       exit (1); *//* OBSOLETE     } *//* OBSOLETE   if (verbose) printf ("Made thread %d\n", tid1); *//* OBSOLETE   sleep (1); *//* OBSOLETE  *//* OBSOLETE   if (pthread_create (&tid2, null_attr, thread2, (void *) 0xdeadbeef)) *//* OBSOLETE     { *//* OBSOLETE       perror ("pthread_create 2"); *//* OBSOLETE       exit (1); *//* OBSOLETE     } *//* OBSOLETE   if (verbose) printf("Made thread %d\n", tid2); *//* OBSOLETE  *//* OBSOLETE   sleep (1); *//* OBSOLETE  *//* OBSOLETE   for (j = 1; j <= 10000000; j++) *//* OBSOLETE     { *//* OBSOLETE       if (verbose) printf("top %d\n", pthread_self ()); *//* OBSOLETE       common_routine (0); *//* OBSOLETE       sleep(1); *//* OBSOLETE       t += j; *//* OBSOLETE     } *//* OBSOLETE    *//* OBSOLETE   exit(0); *//* OBSOLETE } *//* OBSOLETE  *//* OBSOLETE #endif	/* ifndef HAVE_PTHREAD_H */ */

⌨️ 快捷键说明

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