多线程真的能加速程序的执行吗?
假设有以下一个任务:读取一个文件,从文件中搜索指定的单词,统计个数。用以下两种方式完成:
1.开两个线程,一个线程负责读取文件,读取一个单词后扔给另一个线程,另一个线程负责检查这个单词是否匹配指定的单词。
2.只用一个线程,边读文件,读完一个单词以后,匹配这个单词,匹配出结果以后再读下一个单词。
两段程序的代码如下:
多线程程序:(文本文件用的是我在申请的 Binghamton University 的personal statement复制30变以后的结果,所以选择匹配的单词是Binghamton, Orz)(顺便学习一下多线程参数的传递,要将scan_file文件扫描线程扫到的单词传到cmp单词匹配线程中去,LPVOID是一个可以指向任意结构体的指针,可以把自己想传的参数全部写到里面去,就实现了线程之间参数的传递)
#include "stdafx.h"
#include <stdio.h>
#include <windows.h>
#include <string.h>
#include <iostream>
#include <time.h>
int cnt = 0, tcnt = 0;
struct p_type
{
char content[30];
};
DWORD WINAPI cmp(LPVOID p)
{
p_type *pmsg;
pmsg = (p_type*)(p);
if (strcmp(pmsg->content, "Binghamton") == 0)
{