线程和信号量
来源:互联网 发布:淘宝情趣内衣好评50字 编辑:程序博客网 时间:2024/06/01 09:04
1.线程 例360 thread2
注意: 新创建的线程不要使用2dx的内存管理(release, retain)等,也不要调用引擎与节目绘制相关的函数(OpenGL不支持多线程)。
其他读取数据和网络通信可以使用。
1.static pthread_t f1_thread;
2./*线程地址、创建线程的参数 、此线程执行函数、指针参数(不传参数时为null)*/
pthread_create(&f1_thread,NULL, requestThread, &i1);
static void *requestThread(void *data){ int *x = (int*)data; CCLog("requestThread : %d", *x); pthread_mutex_lock(®ion_mutex); s_test++; while (1) { s_test++; sleep(1); if(s_test == 20) { CCLog("unlock"); pthread_mutex_unlock(®ion_mutex); pthread_exit(0); //结束此线程下面的将不会执行,线程结束后不会自动释放pthread_mutex_lock } CCLog("11"); }}
pthread_detach(f1_thread); //线程运行结束后回自动释放所有资源
pthread_join(f1_thread, NULL); //线程f1_thread执行完才会执行其他线程pthread_detach(f1_thread)后不好使
pthread_mutex_destroy(pthread_mutex_t *mutex);
void pthread_exit(void* retval);
3.pthread_mutex_t region_mutex =PTHREAD_MUTEX_INITIALIZER; //给线程访问的资源加锁
一个线程pthread_mutex_lock(®ion_mutex);在没有pthread_mutex_unlock(®ion_mutex);
其他线程执行pthread_mutex_lock(®ion_mutex);将被阻塞直到先执行lock的线程unlock后才执行
2.信号量 例360 semaphore
不同平台的初始化方式可能不同。
实现了规定几个线程可以同时访问某一资源,如果值规定一个线程可以访问和 pthread_mutex_lock差不多,具体还是有区别的
sem_t *binSem;
/*信号量的名、选择创建或打开一个现有的信号灯、权限位、信号灯初始值*/
binSem = sem_open(SEM_NAME,O_CREAT,0644,0);
sem_wait(binSem); //信号量减一,信号量小于0此线程堵塞等待sem_post(binSem);再执行
sem_post(binSem); //信号量加1
sem_unlink(SEM_NAME); //断开连接
sem_close(binSem); //关闭
- 信号量和线程互斥锁
- 线程和信号量
- 线程池和信号量
- 进程的信号量和线程的信号量
- 指南:工作者线程和信号量
- Linux 线程信号量,进程信号量和内核驱动程序信号量(线程同步信号量,进程同步信号量和设备驱动同步信号量)
- 指南:工作者线程和信号量(续)
- mutex线程控制和信号量semaphore
- 一个线程和信号量的例子
- 线程同步—条件变量和信号量
- 线程 信号量
- 线程-信号量
- 线程信号量
- 信号量和事件---信号量
- 多线程之线程同步中的信号量AutoResetEvent和ManualResetEvent
- Linux线程同步(条件变量和信号量)
- 线程学习:1-理解PV操作和信号量
- 线程同步的方法—互斥锁、信号量和条件变量
- 索引的一些总结
- linux2.6.32 led 设备驱动及应用程序
- 享元模式
- 横下拉菜单setTimeout应用
- IOS疯狂基础之利用openURL调用 打电话 发短信等
- 线程和信号量
- 条件显示Dynamic图层要素
- 创建Sdcard
- SQL Join的一些总结
- SQL优化器简介
- jQuery:cookie插件的使用
- 使用异步 I/O 大大提高应用程序的性能
- COCOS2D-x移植常见错误(不定期更新)
- Android 4.0添加高级重启菜单