91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 2KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發(fā)布日期: 2021-06-11
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: C語(yǔ)言??多線程??

資源簡(jiǎn)介

本人在工作用的到c語(yǔ)言進(jìn)程多線程工作,和多線程實(shí)現(xiàn)文件傳輸?shù)墓δ埽途W(wǎng)上尋找一份,供大家參考

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?

#define?THREADS_COUNT?4
#define?THREADS_BUFF_SIZE?1*1024
struct?thread_block
{
????int?infd;?///源文件句柄
????int?outfd;//目的文件句柄
????size_t?start;///文件的寫(xiě)入起始位置
????size_t?end;?///文件寫(xiě)入的終止位置
};

void?usage()
{
????printf(“copy?%%src?%%dst\n“);
}
///獲取文件大小
size_t?get_filesize(int?fd)
{
????struct?stat?st;
????fstat(fd&st);
????return?st.st_size;
}
void?*thread_copy_fn(void?*arg)
{
????struct?thread_block?*block?=?(struct?thread_block?*)arg;
????char?buf[THREADS_BUFF_SIZE];????
????int?ret;
????size_t?count?=?block->start;

????printf(“In?Thread\t%ld\nstart?=?%d\t?end?=?%d\n“\
????????????pthread_self()block->startblock->end);

????///lseek到同樣的位置
????ret?=?lseek(block->infdblock->startSEEK_SET);
????ret?=?lseek(block->outfdblock->startSEEK_SET);
????int?bytes_read;
????int?bytes_write;
????while(count?end)
????{
????????bytes_read?=?read(block->infdbufsizeof(buf));
????????if(bytes_read?>0)
????????{
????????????printf(“thread?=?%ld\t?read?=?%d\t?count?%d\n“\
????????????????????pthread_self()bytes_readcount);
????????????count?+=?bytes_read;

????????????//read()返回-1,同時(shí)errno為EINTR,表示讀的過(guò)程中遇到了中斷
????????????if((bytes_read?==?-1)&&(errno?!=EINTR))
????????????????????break;
????????????char?*ptr_write?=?buf;
????????????while((bytes_write?=?write(block->outfdptr_writebytes_read))!=0)
????????????{
????????????????//write()會(huì)返回-1,同時(shí)errno為EINTR,表示在寫(xiě)的過(guò)程中遇到了中斷
????????????????if((bytes_write?==?-1)&&(errno!=EINTR))
????????????????????break;
????????????????if(bytes_write?==?bytes_read)
????????????????????break;
????????????????else?if(bytes_write?>?0)
????????????????{
????????????????????ptr_write?+=?bytes_write;
????????????????????bytes_read?-=?bytes_write;
????????????????}
????????????????printf(“thread?=?%ld\t?write?=?%d\t?read?%d\n“\
????????????????????pthread_self()bytes_writebytes_read);
????????????}//end-write;
????????????///error?while?write
????????????if(bytes_write?==?-1)
????????????????break;
????????????
????????}
????}
????printf(“#####Thread?exit?%ld#####\n“pthread_self());
????pthread_exit(NULL);?
}?
int?main(int?argcchar?*argv[])
{
????if(argc?????{
????????usage();????
????????return?-1;
????}
????///打開(kāi)文件
????int?infd?=?open(argv[1]O_RDONLY);
????int?outfd?=?open(argv[2]O_CREAT|O_WRONLY0644);
????//?0644也就是-文件所有者有讀寫(xiě)權(quán)限,組有讀權(quán)限,其他用戶有讀權(quán)限
????if(infd?==?-1||?-1?==outfd)
????{
????????printf(“error?while?open?file?\n“);
????????return?-1;
????}
????size_t?file_size?=?get_filesize(infd);

????size_t?thread_size?=?THREADS_COUNT;
????struct?thread_block?*blocks?=?(struct?thread_block?*)
????????malloc(sizeof(struct?thread_block?)*?thread_size);
????size_t?percent?=?file_size?/?thread_size;
????printf(“filesize?=?%d\t?percent_blocks?=?%d\n“\
????????????file_sizepercent);
????int?i?=?0;

?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----

?????文件????????383??2014-06-11?17:00??C實(shí)現(xiàn)多線程下載源碼\readme.txt.txt

?????文件???????3911??2014-06-11?16:07??C實(shí)現(xiàn)多線程下載源碼\thread_download.c

?????目錄??????????0??2014-06-11?16:59??C實(shí)現(xiàn)多線程下載源碼

-----------?---------??----------?-----??----

?????????????????4294????????????????????3


評(píng)論

共有 條評(píng)論

相關(guān)資源