linux 创建线程

35 篇文章 0 订阅

这篇博文就只说下,在ubuntu下 eclipse C++环境之下怎么创建线程

#include<pthread.h>
#include<stdio.h>
#include<stdlib.h>
#include<unistd.h>
#include<errno.h>

// the thread function
//libpthread.so

void * thread(void* arg)
{
  pthread_t newid=0;
   newid=pthread_self();
  printf("this is a new thread %u",newid);
  return NULL;
}
int main()
{
   pthread_t thid;
   printf("main thread is %u\n",(int)pthread_self());
  if( pthread_create(&thid,NULL,&thread,NULL)!=0)
   {
      printf("thread create error %u\n",errno);
      exit(1);
   }
   sleep(1);
   exit(0);
}

这里面的代码只需要注意一点,在输出线程ID的时候一定要注意就是%u,才行,否则的话,会出问题,这是其一,其二呢,就是eclipse下线程的创建需要使用libpthread.so动态库,在eclipse中怎样使用呢?
在Libraries(-l)中添加pthread即可
,这样就完成了我们需要的操作

如果我们想要主线程等待子线程完成之后在进行唤醒,可以使用pthread_join操作,这样就不用再进行sleep了

/*
 * main.cpp
 *
 *  Created on: Jun 26, 2014
 *      Author: john
 */
#include<stdio.h>
#include<stdlib.h>
#include<pthread.h>
#include<unistd.h>
#include<errno.h>
// this is thread function
void* thread_function(void* a)
{
    pthread_t thread_id=0;
    printf("this is thread id %u\n",pthread_self());
    return NULL;
}
int main()
{
	int *status=0;
    pthread_t newid=0;
    printf("this is main thread id %u,\n",pthread_self());
    if(pthread_create(&newid,NULL,thread_function,NULL)==0)
    {
        printf("thread create succefully\n");
    }
    pthread_join(newid,(void**)&status);
    printf("the thread exit code is %d",*status);
    return NULL;
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Linux 中,可以使用以下步骤来创建线程: 1. 包含头文件:首先,需要包含 `<pthread.h>` 头文件,该头文件提供了线程相关的函数和数据类型的定义。 2. 定义线程函数:接下来,需要定义一个函数作为线程的入口点。线程函数的返回类型为 `void*`,参数为 `void*`。这个函数将在新线程中执行。 3. 创建线程:使用 `pthread_create` 函数来创建线程。该函数接受四个参数:指向线程标识符的指针、线程属性、线程函数的指针和传递给线程函数的参数。 4. 等待线程结束(可选):如果需要等待线程执行完成,可以使用 `pthread_join` 函数。该函数会阻塞调用线程,直到指定的线程结束。 下面是一个简单的示例代码: ```c #include <stdio.h> #include <pthread.h> void* thread_func(void* arg) { int thread_num = *(int*)arg; printf("Hello from thread %d\n", thread_num); pthread_exit(NULL); } int main() { pthread_t thread_id; int thread_num = 1; // 创建线程 if (pthread_create(&thread_id, NULL, thread_func, &thread_num) != 0) { printf("Failed to create thread\n"); return 1; } // 等待线程结束 if (pthread_join(thread_id, NULL) != 0) { printf("Failed to join thread\n"); return 1; } printf("Thread joined\n"); return 0; } ``` 在上面的示例中,我们创建了一个新线程,它将执行 `thread_func` 函数,并传递了一个整数作为参数。主线程等待新线程执行完成后,输出 "Thread joined"。请注意,这只是一个简单的示例,实际应用中可能需要更复杂的线程管理和同步机制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

世纪殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值