NDK学习六: NDK线程的创建

 

static char g_gx_log_buf[1024];

void gx_log(const char* fmt, ...)
{
 char* buf = g_gx_log_buf;
 int   pos = 0;
 
 va_list arglist;
 
 pos = sprintf(buf, "[gx]");
 buf += pos; 
 
 va_start       ( arglist, fmt         );
 pos = vsprintf ( buf,     fmt, arglist);
 va_end         ( arglist );

 buf += pos; 
 *buf ++ = 0x0d;
 *buf ++ = 0x0a;
 *buf ++ = 0x00;
 
 __android_log_print(ANDROID_LOG_INFO, "[gx]", g_gx_log_buf );

}


void * gx_task_run(void* arg)
{
 gx_log("gx_task_run start");
 while(1)
 {
  if ( gx_user_stop == 1 )
  {
   break;
  }
  gx_log("gx_task_run ++");
 }
 gx_user_stop = 0;
 gx_log("gx_task_run end"); 
 pthread_exit(0);
}

static pthread_t g_gx_task    = 0;
volatile int gx_user_stop = 0;
JNIEXPORT jint JNICALL Java_gx_1start(JNIEnv * env, jobject obj)
{
 if ( pthread_create(&g_gx_task, NULL, &gx_task_run, (void *)0) != 0 )
 {
  return 0;
 }

 return 1;
}

JNIEXPORT jint JNICALL Java_gx_1stop(JNIEnv * env, jobject obj)
{
 gx_user_stop = 1;
 return 1;
}

你可能感兴趣的:(NDK学习六: NDK线程的创建)