c - 方法结束后执行线程?

标签 c multithreading pthreads posix sleep

我有以下场景,

void* Refresh(void *)
{
 usleep(10);
 ..
}

static void RefreshViews()
{    ...
     pthread_t t;
     pthread_create( &t, NULL, &Refresh, NULL);
     ...
}

我想在 RefreshViews() 函数末尾运行一个线程。为了使其正常工作(临时解决方案),我在 Refresh() 函数执行开始时在另一个线程中添加了 sleep 。

如何更好地处理这种情况?

最佳答案

您可以使用三种方法:

  1. 就像我在评论中所说的那样,在离开函数之前启动线程。

    static void RefreshViews()
    {
        /* The code... */
    
        pthread_t t;
        pthread_create( &t, NULL, &Refresh, NULL);
    }
    
  2. 在调用 RefreshViews 的函数中创建线程。

  3. 有一个额外的函数,充当实际函数的代理,并创建线程:

    static void RefreshViews()
    {
        RealRefreshViews();
        pthread_t t;
        pthread_create( &t, NULL, &Refresh, NULL);
    }
    

关于第一种方法的一个问题是,如果在函数结束之前有显式的返回,则必须记住创建线程。或者使用 goto 转到线程创建,而不是 return

关于c - 方法结束后执行线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8384290/

相关文章:

C如何拆分从.txt文件scanf读取的变量

c - 使用 Xinerama 的多个显示器可能的分辨率

c++ - vector 作为 pthread_create 的输入

c++ - 如何获取 std::thread() 的 Linux 线程 ID

php - 用PHP线程打开文件

c - 如何在c中的32位操作系统中制作scanf()类型的函数?

c - 输出错误,无法理解为什么 C

mysql - MySQL 程序线程安全吗?

multithreading - Maven 多线程构建如何工作?

java - Go 的多线程和 pthread 或 Java 线程有什么区别?