用KDevelop开发Linux线程,
编译遇到pthread_join,说找不到这个函数。
是link的时候遇到的问题;
在kdevelop的右边的“Automake Manager”的下面一个窗口,右键工程名字,选择Option菜单
在Libraries卡片中的”Link libraries outside project(LDADD)“中,进行add
输入 -lpthread
编译通过
==================================
在一个for循环中,开启多个线程,每个线程开启的时候,传入一个参数(就是for的循环变量),发现所有线程中,接收到的值都是一样的,可是传入的时候值是不同的。
pthread_create( &thread, NULL, (void *)function, (void *)&i )
线程创建是,传入的是i的地址,开启线程,是异步的过程,不是调用pthread_create,线程就开启了,
这样每个线程接收到的地址是一样的,而且几乎都是在for循环结束的时候才开启的线程,这样线程中,接收到的值都是一样的;
如果要线程接收到正确的值,可以
1. 在线程开启后,调用一下sleep或者usleep,给线程启动的时间;
2. 传入线程的值,给每个线程一个不同的变量,这样每个线程就能接收到自己的值,不会冲突了;
==============================
pthread_exit和return区别
如果在线程中,return返回到函数的上一层,而pthread_exit在线程中无论哪里调用,就退出线程
这2个函数,在线程主函数中调用,效果是一样的;