一个Linux下多线程Demo
来源:互联网 发布:js时间戳转换成日期 编辑:程序博客网 时间:2024/04/30 13:00
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <sys/time.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <unistd.h>
#include <fcntl.h>
#include <pthread.h>
#include <semaphore.h>
#include <netdb.h>
#include <ifaddrs.h>
#include <sys/socket.h>
#include <net/if.h>
typedef struct VideoHandler
{
int recviceing; //接收数据标识
int timeout; //超时时间
pthread_t hThread; //线程句柄
pthread_mutex_t mutex; //互斥量
pthread_cond_t cond; //
}VideoHandler;
VideoHandler *pVideoHandler = NULL;
void *RecvThread(void *lpParameter) {
//作为参数传入
VideoHandler *pVideo = (VideoHandler*)lpParameter;
int len;
struct timespec timeoutTime;
//加入互斥量
pthread_mutex_lock(&pVideo->mutex);
while(1 == pVideo->recviceing)
{
if (0 == pVideo->recviceing) {
//Exit Thread............
//线程退出标识
break;
}
//len=recvfrom();
if(len < 0)
{
continue;
}
// 其他处理.......
//线程等待5秒
timeoutTime.tv_sec = time(NULL) + pVideo->timeout;
timeoutTime.tv_nsec = 0.0;
pthread_cond_timedwait(&pVideo->cond, &pVideo->mutex, &timeoutTime);
}
//解除互斥量
pthread_mutex_unlock(&pVideo->mutex);
return ((void*)0);
}
/*初始化变量,创建线程*/
int initVideoThread() {
pVideoHandler = malloc(sizeof(VideoHandler));
pthread_mutex_init(&pVideoHandler->mutex,NULL);
pthread_cond_init(&pVideoHandler->cond,NULL);
pVideoHandler->recviceing =1;
pVideoHandler->timeout =5;
pthread_create(&pVideoHandler->hThread,NULL,&RecvThread,(void *)&pVideoHandler);
return 0;
}
/*释放线程*/
int freeVideoThread() {
if (0 !=pVideoHandler->recviceing) {
pVideoHandler->recviceing =0;
}
//等待直到线程退出
pthread_join(pVideoHandler->hThread,NULL);
free(pVideoHandler);
return 0;
}
- 一个Linux下多线程Demo
- linux多线程demo
- linux多线程【1】demo
- Linux多线程编程 Demo
- Linux-多线程(Demo)
- linux多线程优先级demo
- Java多线程下压缩文件demo
- windows下多线程简单demo
- 【多线程】一个简单的线程池Demo
- 发布一个 Linux 下的 C++ 多线程库
- 推荐一个Linux的 多线程下载工具(命令行下):axel
- [C++] 发布一个 Linux 下的 C++ 多线程库
- linux下多线程生产者消费者实现的一个示例
- 一个linux控制台程序demo
- linux系统编程-一个demo
- windows下C语言多线程编程Demo
- Java多线程____一个简单的多线程demo
- 第四章Linux多线程简单Demo
- 基于MDK的LCD显示实验
- XSS的原理分析与解剖
- 简单实现基于UDP的Socket单线程通信
- Linux下修改root密码以及找回密码的方法
- Extjs5.1学习笔记2——工具栏和菜单栏的使用
- 一个Linux下多线程Demo
- Android的API版本和名称对应关系
- VC++6.0的一个bug
- 《netty权威指南》3.2nety第一个服务端/客户端开发应用程序
- 文件读取时,遇到的一点小知识
- Proguard使用最新,最全教程,亲自试验
- 全面理解面向对象的 JavaScript
- Android自定义属性以及format详解
- Matlab如何把for循环的结果以矩阵的形式显示