编写一个多线程的C程序 分割数据并分发给每个线程 30
编写一个多线程的C程序分割数据并分发给每个线程下面是英语翻译过来的要求可能有点不太通顺希望能有大神帮忙解答!输入数据:输入数据通过标准输入。假设输入数据只是文本数据。输入...
编写一个多线程的C程序 分割数据并分发给每个线程下面是英语翻译过来的要求 可能有点不太通顺 希望能有大神帮忙解答 !
输入数据:输入数据通过标准输入。假设输入数据只是文本数据。输入数据是多行的,每行由\ n分隔。我们不知道会有多少条线路进来,它可以是无限的。
输入参数:有一个输入参数。它指定了要创建多少个线程。$ ./datasplit -n 3
在上面的这个例子中,程序应该创建3个线程。输入参数n必须存在于命令行中。如果没有,或无法识别,程序应该打印错误并退出。 n的值必须大于0。
内部架构:在开始时创建n + 1个线程。前n个线程是工作线程。最后一个线程是接收从n个工作线程传递的数据的接收线程。随着输入数据成为完整的一行,main函数以循环方式将其传递给其中一个工作线程。您应该使用“读取”功能从标准英寸接收数据。每个线程转换接收到的所有行中的小写字母,并将其传递给接收者线程。接收器线程打印该行。也就是说,写出来的标准。
环境:使用Linux环境。您可以安装vmware播放器或虚拟机,然后在VM内安装Linux。你也可以在Windows中使用Cygwin。大多数时候Cygwin也会工作。但是,有时程序会在Cygwin中编译OK,但在Linux中可能不会。
编译和构建:使用附件的“Makefile”。把这个文件放到你编写的c程序的某个目录下,命名为datasplit.c,然后输入“make”。它会自动创建可执行文件。
你的系统必须安装'make'工具。在Ubuntu Linux的情况下,执行“sudo apt-get install build-essential”来安装它。在CentOS或Fedora中,您必须使用yum命令。
Makefile.c :
.SUFFIXES : .c .o
CC = /usr/bin/gcc
CPP = /usr/bin/g++
CFLAGS = -pthread -g -c -Wall
LDFLAGS= -Wall -lm
LIBFILE= -pthread
SRC= datasplit.c
OBJ= $(addsuffix .o, $(basename $(SRC)))
TARGET= datasplit
all: $(TARGET)
datasplit: datasplit.o
$(CC) $(LDFLAGS) $(LIBDIR) $(LIBFILE) -o $@ $^
.c.o:
$(CC) $(CFLAGS) $(INCDIR) $<
clean:
rm -rf $(OBJ) $(TARGET) core 展开
输入数据:输入数据通过标准输入。假设输入数据只是文本数据。输入数据是多行的,每行由\ n分隔。我们不知道会有多少条线路进来,它可以是无限的。
输入参数:有一个输入参数。它指定了要创建多少个线程。$ ./datasplit -n 3
在上面的这个例子中,程序应该创建3个线程。输入参数n必须存在于命令行中。如果没有,或无法识别,程序应该打印错误并退出。 n的值必须大于0。
内部架构:在开始时创建n + 1个线程。前n个线程是工作线程。最后一个线程是接收从n个工作线程传递的数据的接收线程。随着输入数据成为完整的一行,main函数以循环方式将其传递给其中一个工作线程。您应该使用“读取”功能从标准英寸接收数据。每个线程转换接收到的所有行中的小写字母,并将其传递给接收者线程。接收器线程打印该行。也就是说,写出来的标准。
环境:使用Linux环境。您可以安装vmware播放器或虚拟机,然后在VM内安装Linux。你也可以在Windows中使用Cygwin。大多数时候Cygwin也会工作。但是,有时程序会在Cygwin中编译OK,但在Linux中可能不会。
编译和构建:使用附件的“Makefile”。把这个文件放到你编写的c程序的某个目录下,命名为datasplit.c,然后输入“make”。它会自动创建可执行文件。
你的系统必须安装'make'工具。在Ubuntu Linux的情况下,执行“sudo apt-get install build-essential”来安装它。在CentOS或Fedora中,您必须使用yum命令。
Makefile.c :
.SUFFIXES : .c .o
CC = /usr/bin/gcc
CPP = /usr/bin/g++
CFLAGS = -pthread -g -c -Wall
LDFLAGS= -Wall -lm
LIBFILE= -pthread
SRC= datasplit.c
OBJ= $(addsuffix .o, $(basename $(SRC)))
TARGET= datasplit
all: $(TARGET)
datasplit: datasplit.o
$(CC) $(LDFLAGS) $(LIBDIR) $(LIBFILE) -o $@ $^
.c.o:
$(CC) $(CFLAGS) $(INCDIR) $<
clean:
rm -rf $(OBJ) $(TARGET) core 展开
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询
广告 您可能关注的内容 |