当前位置:  技术问答>linux和unix

pthread编程入门问题--急,在线给分

    来源: 互联网  发布时间:2014-12-10

    本文导语:  int pthread_create(pthread_t * thread, pthread_attr_t * attr,  void * (*start_routine)(void *), void * arg)  我的代码如下: 方法一: pthread_t tid1; void myfunc( void ) { ××××× ;} pthread_create(&tid1,NULL,(void *(*)(void *)&myfunc,NULL); ...

int pthread_create(pthread_t * thread, pthread_attr_t * attr, 
void * (*start_routine)(void *), void * arg) 

我的代码如下:
方法一:
pthread_t tid1;
void myfunc( void ) { ××××× ;}
pthread_create(&tid1,NULL,(void *(*)(void *)&myfunc,NULL);

方法二:
pthread_t tid1;
void * myfunc( void * myarg) { ××××× ;}
pthread_create(&tid1,NULL,(void *(*)(void *)myfunc,NULL);

再Redhat 7.2 QT/KDE下编译,结果都没有通过,哪位兄台指点一下,我知道错误一定是在第三个参数上。编译结果告诉我是,pthread_create 没有这样的用法。

最好能学习一下肯定可以执行的简单的源代码。
多谢各位了



|
编译的时候要连 pthread 库文件。

cc myproc.c -lthread -o myproc

不知道你的thread库文件名字是什么,如果没有找到 libthread.a 文件,可以看看有没有其他的thread库,例如 libpthreads.a libgthreads.a 或者.so结束的动态库文件;找到后 -l选项也要相应改成 -lpthreads 或 -lgthreads

|
#include 
#include 
/* 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_xsfunction. */
    pthread_create (&thread_id, NULL, &print_xs, NULL);
/* Print o’s continuously to stderr. */
    while (1)
        fputc (‘o’, stderr);
    return 0;
}

|
void * ServerThread(void * arg)
{
}

int i;
pthread_t  tid;
pthread_create( &tid, NULL, &ServerThread,(void *)i);

|
解决方法有两个
1 调用 pthread_create 里 myfun 前的一对类型转换定义,因为,这种写法只适用于定义,不适用于调用时的类型转换。你的myfun定义符合要求。如果是C++ 中,在 myfun 定义时,加 extern "C" 
2  定义自己的类型 
   typedef   void * (*MYFUN)(void *);
  调用时,mysun 如下类型转换 (MYFUN)myfun

    
 
 

您可能感兴趣的文章:

 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • unix/Linux下c/c++ pthread库读写锁函数介绍
  • pthread_attr_setdetachstate(&attr, PTHREAD_CREATE_DETACHED);和pthread_detach(pthread_self()); 有区别吗。怎么我执行的效果不一样
  • pthread_attr_init()及pthread_cond_wait使用疑惑
  • pthread_cond_signal和pthread_cond_wait两个函数是怎么意思?
  • 包含了#include <pthread.h>,为什么还有pthread_create错误?
  • 先pthread_cancel()再pthread_join(),主线程退出?
  • 请问pthread_mutex_lock()和pthread_mutex_unlock()可不可以用于对不同进程的线程进行同步。
  • 请问一下红色字体处的区别,及pthread_self()和pthread_creat()函数第一个参数的区别?
  • pthread_cond_wait 之前的 pthread_mutex_lock 语句 有什么作用,可以不用吗?
  • pthread_cancel和pthread_cond_wait
  • pthread_cond_t和pthread_mutex_t的疑问?
  • pthread_cond_t进入等待状态,则pthread_mutex_t无效...
  • LINUX关于pthread_create 和pthread_join
  • Pthread
  • pthread_create成功返回,但pthread_kill(thrdid, 0)返回说进程不存在?
  • 问一个关于pthread线程删除(取消)的问题
  • pthread 阻塞问题
  • pthread_cond_timedwait用来让线程睡眠无效?
  • pthread_cond_timedwait用法
  • 关于线程pthread.h
  • linux下运行pthread库出错的问题


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3