问题描述
- linux系统下缓冲机制问题
-
刚开始接触linux系统,所问问题可能小白,还望见谅。 最近再做一个CAN转以太网的网关,也就是CAN总线收到数据,通过以太网转发出去;以太网收到数据,通过CAN总线转发出去。 硬件用的是atmel的arm9处理器,软件用的是linux操作系统。现在的进展是CAN总线和以太网的收发都已经ok了。代码如下:
void SendUp()
{
while(1)
{
CAN_Receive();
LoadMessage();
TCP_Write(UpMessageBuf,MessageLength);
}
}void SendDown()
{
int TcpReceiveBytes=0;
while(1)
{
TcpReceiveBytes=TCP_Read(DownMessageBuf);
DownMessageBuf[TcpReceiveBytes]=0;
printf("TCP Receive %d bytes:%sn",TcpReceiveBytes,DownMessageBuf);
CAN_Send(DownMessageBuf,TcpReceiveBytes);
}
}用了两个线程,分别进行上行数据的转发和下行数据的转发,即等待收到数据,读取数据,转发数据;再等待接收数据……依次类推。可以看出,目前没有使用任何缓冲机制。 所以请教各位,对于我的这样一个功能,使用什么缓冲机制比较有效?另外,完成这个功能,使用线程好还是使用进程好?
时间: 2024-09-29 11:11:25