Chinaunix
标题:
请问C语言中如何实现两个语句并发执行?
[打印本页]
作者:
dragonq
时间:
2004-04-13 18:38
标题:
请问C语言中如何实现两个语句并发执行?
如函数main()中调用func1()和func2(),我想让这两个函数并发执行,该如何来写?
谢谢!
作者:
flw
时间:
2004-04-13 18:43
标题:
请问C语言中如何实现两个语句并发执行?
用多线程。
作者:
pandaisme
时间:
2004-04-13 18:51
标题:
请问C语言中如何实现两个语句并发执行?
这和c语言关系不大,关键要操作系统支持才可以
作者:
dragonq
时间:
2004-04-13 19:24
标题:
请问C语言中如何实现两个语句并发执行?
有这样的例子吗?
麻烦贴一个,谢谢!
作者:
dragonq
时间:
2004-04-13 21:47
标题:
请问C语言中如何实现两个语句并发执行?
难道没有像SHELL中的&一样功能的函数吗?
func1和func2不需要通信,只是因为两个函数都需要等待,所以想让他们并发执行!
没有简单一些的做法吗?
作者:
parady
时间:
2004-04-13 23:23
标题:
请问C语言中如何实现两个语句并发执行?
#include <stdio.h>;
#include <mpi.h>;
int main(int argc,char **argv)
{
int rank;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
if(rank == 0) func1();
else func2();
MPI_Finalize();
return 0;
}
复制代码
[/code]
作者:
linuxmj
时间:
2004-04-13 23:48
标题:
请问C语言中如何实现两个语句并发执行?
[quote]
原帖由 "parady"][/quote 发表:
如何让它们并发执行呢?
我想用多处理机才行吧!
上述做法肯定称不上并发。
首先要弄懂并发的宏观和微观的意义才行
请高手不吝赐教
作者:
liuchuanwenno1
时间:
2004-04-14 09:49
标题:
请问C语言中如何实现两个语句并发执行?
并发 & 并行!
作者:
lizuoyong
时间:
2004-04-14 11:14
标题:
请问C语言中如何实现两个语句并发执行?
#include <stdio.h>;
#include <unistd.h>;
#include <stdlib.h>;
#include <pthread.h>;
void *thread_function(void *arg);
char message[] = "Hello World";
int main() {
int res;
pthread_t a_thread;
void *thread_result;
res = pthread_create(&a_thread, NULL, thread_function, (void *)message);
if (res != 0) {
perror("Thread creation failed");
exit(EXIT_FAILURE);
}
printf("Waiting for thread to finish...\n");
res = pthread_join(a_thread, &thread_result);
if (res != 0) {
perror("Thread join failed");
exit(EXIT_FAILURE);
}
printf("Thread joined, it returned %s\n", (char *)thread_result);
printf("Message is now %s\n", message);
exit(EXIT_SUCCESS);
}
void *thread_function(void *arg) {
printf("thread_function is running. Argument was %s\n", (char *)arg);
sleep(3);
strcpy(message, "Bye!");
pthread_exit("Thank you for the CPU time");
}
复制代码
少许修改, 就能满足楼主的要求。
作者:
dragonq
时间:
2004-04-16 15:56
标题:
请问C语言中如何实现两个语句并发执行?
谢谢大家!
我查询了一下多进程编程,但我的程序比较简单,各进程相互独立,不需要相互通信,只使用了简单的fork()语句,我把代码贴出来以便有和我同样问题的参考!也希望高手能帮助看看如何可以优化!
#include <stdio.h>;
#include <unistd.h>;
#include <sys/types.h>;
#include <sys/wait.h>;
void func1();
void func2();
void func3();
int main(){
pid_t pid1, pid2, pid3;
pid1 = fork();
if(pid1 == 0){
printf("Hello from the child process!\n");
printf("The child is exiting now!\n");
func1();
}
else if( pid1 != -1 ){
printf("Hello from the parent,pid %d.\n",getpid());
printf("The parent has forked process %d.\n",pid1);
pid2 = fork();
if( pid2 == 0 ) func2();
else if( pid2 != -1 ){
printf("The parent has forked process %d.\n",pid2);
pid3 = fork();
if( pid3 ==0 ) func3();
else if(pid3 != -1){
printf("The parent has forked process %d.\n",pid3);
waitpid(-1, NULL, 0);
printf("The parent is exiting now.\n");
}
else{
printf("There was an error with forking pid3!\n");
}
}
else{
printf("There was an error with forking pid2!\n");
}
}
else{
printf("There was an error with forking pid1!\n");
}
}
void func1(){
printf("I'm func1.\n");
sleep(15);
}
void func2(){
printf("I'm func2.\n");
sleep(15);
}
void func3(){
printf("I'm func3.\n");
sleep(15);
}
复制代码
作者:
zhujunsoft
时间:
2004-04-16 18:38
标题:
请问C语言中如何实现两个语句并发执行?
用多进程,多线程,分布式都可以,上面都有了,哈哈
作者:
mirnshi
时间:
2004-04-16 23:55
标题:
请问C语言中如何实现两个语句并发执行?
fork应该说实现最简单
欢迎光临 Chinaunix (http://bbs.chinaunix.net/)
Powered by Discuz! X3.2