由于进程很多,pthread_create的错误返回代码是 35 错误,我用过pthread_exit应该杀死线程不是吗?
error return code from pthread_create is 35 error due to many processes,I have used pthread_exit which should kill the thread isn't it?
我在pthread_create中创建了一个pthread_create,我使用了套接字编程,在那里我接收一个数据包,然后创建一个线程来写文件。当我发送一个非常大的文件,我得到这个错误…??
代码如下:
void *writePack(void *sock)
{
size_t nbyte;
ssize_t writeSize;
nbyte = 1466;
off_t offset;
offset = (((struct writePacket *)sock)->seq * 1466);
char* buffer = new char();
buffer = ((struct writePacket *)sock)->datamsg;
writeSize = pwrite(((struct writePacket *)sock)->pp,(const void *)buffer, nbyte, offset );
free(buffer);
pthread_exit(NULL);
}
这是父接收代码的代码…
recvfrom(sockA->sockid, (void *)&recvdata, sizeof(struct data), 0, (struct sockaddr *) &cli_addr, &clilen);
if (n<0)
error("Error on reading");
pthread_mutex_lock(&qlock);
struct writePacket* a;
a=new writePacket;
a->sockID = sockA->sockid;
a->pp = sockA->pp;
a->seq = recvdata.seq;
memcpy(a->datamsg,recvdata.datamsg,1466);
pc = pthread_create(&write[counter], NULL, writePack,(void *) a);
if (pc)
{
printf("ERROR; return code from pthread_create() is %dn", pc);
exit(-1);
}
这可能是你创建的线程没有机会执行,而你已经创建了越来越多的线程从套接字读取。
相反,创建一个线程从套接字读取数据,另一个线程从套接字写入数据,并在两个线程之间以消息的形式传递数据。
相关文章:
- Pthread段错误,使用指向main中变量的指针
- C++ PTHREAD 错误:非静态成员函数的使用无效
- Opencv分段错误使用pthread捕获帧C++
- C++/pthread/join 错误消息的含义 "what(): Invalid argument"
- 加入pthread时出现分段错误
- Pthread模板参数错误
- pthread分配输出错误
- 运行我的 C++ Pthread 程序时出错 - 分段错误(核心转储)
- pthread 在分离的线程上创建错误 11
- 当g++静态链接pthread时,导致Segmentation错误,原因何在
- 这是pthread C++程序的不可移植错误吗
- 为什么在 C++ 中将函数作为参数传递给 pthread 时会出现"non-static member function"错误?
- 错误:' pthread '没有命名类型
- "多个定义"错误指向pthread.h
- pthread在c++中创建错误
- 错误: C1083: 无法打开包含文件:"pthread.h": 没有此类文件或目录
- 使用 pthread 的多个参数(带结构)错误
- pthread程序导致Linux机器出现分段错误.在Cygwin64上工作良好
- 在c++中使用pthread时的编译错误
- Pthread查询:线程顺序错误