|
楼主 |
发表于 2013-2-27 16:04:31
|
显示全部楼层
本帖最后由 foxpro2005 于 2013-2-27 16:09 编辑
找到解决办法了,利用信号量互锁机制。(并使用行号来作进程任务号)- #include <stdio.h>
- #include <stdlib.h>
- void Task(char *str1, char *str2, unsigned int ProcessID)
- {
- static unsigned int lc = 0; // 记录进程号(行号)
- static unsigned char lock = 0; // 信号锁
- static unsigned char i = 0;
- if(!lock || lc == ProcessID){
- lock = 1;
- lc = ProcessID;
- if(i == 0) {
- printf("%s\n",str1);
- i++;
- }
- else
- {
- printf("%s\n",str2);
- i = 0;
- lock = 0;
- }
- }
- }
- int main()
- {
- unsigned int i;
- for(i=0; i<3; i++){
- Task("This is 01 task - A","This is 01 task - B",__LINE__);
- Task("This is 02 task - A","This is 02 task - B",__LINE__);
- Task("This is 03 task - A","This is 03 task - B",__LINE__);
- Task("This is 04 task - A","This is 04 task - B",__LINE__);
- }
- return 0;
- }
复制代码 是否还有更好的办法?
CB的工程文件:
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|