如何防止 pthread 中的 memory 泄漏? 我正在运行一个服务器客户端程序,其中服务器必须执行 pthread 程序并将结果发送给客户端。 客户端不断地请求命令,直到停止。 服务器提供的结果仅在第一次迭代中为真,但在第二次迭代中提供的结果不正确。 我尝试使用 pthread_join 和 ...
如何防止 pthread 中的 memory 泄漏? 我正在运行一个服务器客户端程序,其中服务器必须执行 pthread 程序并将结果发送给客户端。 客户端不断地请求命令,直到停止。 服务器提供的结果仅在第一次迭代中为真,但在第二次迭代中提供的结果不正确。 我尝试使用 pthread_join 和 ...
我最近读了一本关于如何在 unix 环境中编写代码的书。有一个示例代码让我很困惑。 示例代码: 如何找出“(void *)1”或“(void *)2”? 可以将类型“void *”转换为“long”吗? 在我看来,“(void *)1”告诉我 1 是一个地址,但是当我使用 deref 来获取存储在 ...
今天是我使用线程的第一天。 我很难理解为什么我无法通过以下两种方式传递 retval(类型:void *)(即,只有一种方式会给出预期的结果,如下所示)。 我将提供我的代码的简化版本: 当我在我的 Linux 终端上编译上述源代码时: 然后执行: 我得到以下输出: 但是,如果我在上 ...
在 CSAPP 书第 12.3 节中,他们说.. 线程通过调用pthread_exit function显式终止。 如果主线程调用pthread_exit ,它会等待所有其他对等线程终止,然后终止主线程和整个进程,返回值为 thread_return。 但是在pthread_exit的手册页中: ...
你好吗? 我将在 Ubuntu 18.04 上修复工作线程中的分段错误。 我的代码如下。 代码运行良好。 此代码的 output 如下。 新线程成功运行 0 新线程成功运行 1 新线程成功运行 2 线程崩溃了 3 新线程成功运行 4 新线程成功运行 5 新线程成功运行 6 新线程成功运行 7 但是, ...
我一直在学习pthread库,并创建了一个简单的代码来将两个数字相乘,但是我无法摆脱这个警告。 附言。 代码工作正常。 这是警告: 任何见解将不胜感激。 ...
我试图通过将数组拆分为大小为 10 的段来使用 pthread 库总结 1000 个元素的整数数组(其中每个元素为 1)。因此,有效地使用了 100 个线程来执行此操作。 此并行操作的结果符合预期 (1000)。 但有趣的是,在我第一次调用pthread_join()之后,我在创建线程之前计算的顺序 ...
我找到了这个例子; 这里两个线程 threadDefault 和 threadCustomized 通过使用 pthread_exit 然后返回来终止。 为什么作者写了这两个指令? ...
我有一个小问题,我希望找到可以帮助的人。 我正在尝试使用 ucontext 在 c 中开发一个线程库,并且我已经为此开发了基本功能。 所以现在我的问题是我想考虑用户用 return 而不是我的退出函数完成他的函数的情况。 是否可以知道线程上下文是否已完成并在用户在其函数中使用 retutn 时获取 ...
我试图通过pthread_exit()函数将指向结构lower_hyper_id的指针从线程传递到主线程,该指针将比较并输出结构中的值。 但是,当我尝试使用返回的值并将其强制转换为结构时,我收到错误消息(分段错误)。 创建并返回结构的线程: 在主要方面: 我已经看过sta ...
我需要创建一个程序来计算递归(对于某些序列)。 当我使用int并清除一个递归时,它将计算不带浮点数的值(例如fibonacci序列,该值仅返回中性数),它可以工作。 但是,当尝试使用基于除法的序列(带有浮点数)时,会显示如下错误: 错误:无法转换为浮动类型pthread_exit((v ...
我正在尝试在C中使用pthread比较两个字符串。 这个想法是看完整的字符串2是否在字符串1中(例如,如果string1 = lkajdsgl和string2 = jd那么我将有一个匹配项)。 我不了解pthread如何以一般方式工作。 在这里,我创建我的pthreads,假设NUM_TH ...
我在C中使用posix线程。我的程序中有两个线程,thread1和thread2。 线程1启动线程2。 线程1维护一个变量var1,基于该变量必须安全退出线程2。 thread2调用了许多冗长的函数(其运行时间最多为5秒)。 在thread2中有许多使用malloc的内存分配。 ...
这是我创建一些线程的代码。 我想在同一时间创建500个线程,而不是更多。 很简单,但是在创建32xxx线程后我的代码失败了。 然后我不明白为什么我在32751线程之后得到错误代码11,因为,每个线程都结束了。 我可以理解,如果线程没有退出,那么32751线程在同一台计算机上... ...
运行以下C代码将导致程序挂起,并且不响应信号(包括CTRL-C)。 知道为什么吗? 当其他线程已经创建并正在运行时,该行为是正常的,但是我想知道在使用pthread_exit(0)之前是否始终需要检查该线程。 编辑:这是挂起的完整代码。 但是,我正在使用glib(-lgli ...
我有一个工作线程正在执行轮询活动(它的目标是libcurl,但这不相关)。 应用程序中的许多操作都可以启动工作线程,但是如果它已经在运行,则不应创建任何新线程。 来自应用程序的新请求仅与已经进行的任何其他轮询结合在一起。 总而言之,当没有任何事情要做时,单个工作线程退出。 代 ...
我有一台服务器,可以处理多个客户端。 连接到它的每个客户端都在其自己的线程中得到服务。 现在,如果服务器端发生任何错误,我想通过调用pthread_exit退出该线程,并终止该线程正在服务的客户端。 然而; 当我尝试这样做时,我的客户就挂了。 同样,这也会导致处于不同线程中的其他客户端 ...
我正在开发一个多线程项目,我需要在代码的某个位置复制线程堆栈(我需要一个指向它的指针)。 因为退出该线程后,我将需要该指针(并且它的堆栈已释放)。 如果我能以某种方式告诉pthread_exit()不释放线程堆栈,它也可以完成工作! PS:这背后的原因是,当此线程实际上已死时,我想稍后 ...
码: 为什么这里的pthread_exit(NULL)就像pthread_join() ? 即为什么退出main而不破坏printHello线程并允许它继续? ...
我已经在线程中打开一个文件,并使用pthread_exit()例程终止了该线程。 也会关闭打开的文件吗? ...