首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

线程间共享变量的注意点

线程间共享变量的注意点

两个线程共享同一个变量是否需要加锁,  根据需要来定。
  但是如果两个线程有可能同时修改这个变量的话,
  那么一定是需要加锁的。
  代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。
  pthread_join函数及linux线程
  pthread_join使一个线程等待另一个线程结束。
  代码中如果没有pthread_join主线程会很快结束从而使整个进程结束,从而使创建的线程没有机会开始执行就结束了。加入pthread_join后,主线程会一直等待直到等待的线程结束自己才结束,使创建的线程有机会执行。
  所有线程都有一个线程号,也就是Thread ID。其类型为pthread_t。通过调用pthread_self()函数可以获得自身的线程号。
  下面说一下如何创建一个线程。
  通过创建线程,线程将会执行一个线程函数,该线程格式必须按照下面来声明:
  void * Thread_Function(void *)
  创建线程的函数如下:
  int pthread_create(pthread_t *restrict thread,
  const pthread_attr_t *restrict attr,
  void *(*start_routine)(void*), void *restrict arg);
  下面说明一下各个参数的含义:
  thread:所创建的线程号。
  attr:所创建的线程属性,这个将在后面详细说明。
  start_routine:即将运行的线程函数。
  art:传递给线程函数的参数。
  下面是一个简单的创建线程例子:
  #include <pthread.h>
  #include <stdio.h>
  /* Prints x’s to stderr. The parameter is unused. Does not return. */
  void* print_xs (void* unused)
  {
  while (1)
  fputc (‘x’, stderr);
  return NULL;
  }
  /* The main program. */
  int main ()
  {
  pthread_t thread_id;
  /* Create a new thread. The new thread will run the print_xs
  function. */
  pthread_create (&thread_id, NULL, &print_xs, NULL);
  /* Print o’s continuously to stderr. */
  while (1)
  fputc (‘o’, stderr);
  return 0;
  }
继承事业,薪火相传
返回列表