关于任务中break的问题
以下面任务为例子。执行了break后。调度器怎么在调用该任务。能否直接执行socket(); 这个函数。 还是和回到上次切换的入口。while(1)
{
socket();
bind();
listen();
while(1)
{
//非阻塞加入select(),阻塞方式直接调用accept();
connectFd = accept( sockFd, (struct sockaddr *)&cltAddr, &len );
//接下来看你是先收数据recv()还是先发数据send()
while(1)
{ //直接调用recv也是阻塞方式,要用非阻塞方式,必须加入到select()中
recvNum = recv( connectFd, tcpBuf, 20, 0 );
if ( recvNum <= 0 )
{
break;
}
sendNum = send( connectFd, tcpBuf, 20, 0 );
OSTimeDly(100);
}
lwip_close(connectFd);//close()后直接返回到accept即可,不需要重新绑定与侦听
}
} 以RT-THREAD 系统为准。 上面任务仅是作为说明。 这个和应用相关,和OS无关:
break后执行close,然后继续等待accept。 C语言什么时候可以直接判断“<=”了? void task1(void)
{
int a;
a = 11;
while(1)
{
a = 12;
if(XXXX)
break;
}
}
这个执行break后,在怎么执行。 什么时间在执行这个任务 执行完break后,脱离循环
如果是RT-Thread:(针对实现的不同差异很大,这里仅适合RT-Thread)
线程退出后,线程自动销毁,如果是动态创建的线程,将自动释放线程控制块,线程栈内存。
这些在《RT-Thread编程指南》中都提到有的,请仔细看手册。 那这样该任务就作废了,(不重新建立)永远得不到执行,对吗
页:
[1]