多线程。如果我使用信号量,是否可以在启动时创建很多线程,或者我应该只有几个?
我有一个积分向量。向量的长度为K。K =100。但是此值可能会增加。 每个点都是n维向量。 我有一个指向函数的指针数组。大小为10。我必须为每个点计算每个函数。 并将其存储在txt文件中 而且我需要为此使用多线程。
我不熟悉并行化。
我有4个核心。所以我想同时运行4个线程。 我知道有带有= 4的信号灯。 所有功能都不共享变量。 我认为他们只共享txt文件。
创建前100个线程是否是错误的做法? 然后使用信号量为counter = 4
4个线程同时运行,等待96个。 他们中的一个做完所有事情之后,还会有 4个线程,但有95个等待。 等待线程占用内存或其他资源吗?
还是仅当4个正在运行的线程之一完成时才创建新线程?
答案 0 :(得分:0)
等待线程占用内存,而在线程之间切换则占用时钟周期。这涉及到对内核的调用,并且上下文切换并不便宜。当您尝试并行化一个容易分成小块的进程时,与核心拥有相同数量的线程通常会更有效。