내 컴퓨터에서 사용자 당 프로세스 수 /etc/security/limits.conf
와 nproc 값 을 제한하고 싶습니다 .
나는 읽고 여기에 리눅스는 프로세스와 스레드를 구별 나던 것을?
사용자 당 현재 nproc 제한은 1024이지만 스레드도 포함하면 내 관점에서 너무 낮습니다. 맨 페이지에는 limits.conf
nproc에 대한 "process"만 언급되어 있으며 다른 내용은 없습니다.
// Edit // C ++에서 샘플 코드 부스트 // g ++ -o boost_thread boost_thread.cpp -lboost_thread
#include <unistd.h>
#include <iostream>
#include <boost/thread.hpp>
using namespace std;
int counter;
void print_thread(int i) {
counter++;
cout << "thread(" << i << ") counter " << counter << "\n";
sleep(5);
counter--;
}
int main() {
int i = 0;
int max = 1000000;
while (i < max) {
boost::thread(print_thread, i);
i++;
}
return 0;
}
테스트 (일부 행 제거) :
$ ulimit -u
1024
$ ./thread
...
...
...
thread(828) counter 828
thread(829) counter 829
thread(830) counter 830
thread(831) counter 831
thread(832) counter 832
thread(610) counter thread(833833) counter 834
thread(834) counter 835
thread(835) counter 836
thread(836) counter 837
thread(837) counter 838
thread(838) counter 839
thread(839) counter 840
thread(840) counter 841
thread(841) counter 842
thread(842) counter 843
thread(843) counter 844
thread(844) counter 845
thread(845) counter 846
thread(846) counter 847
thread(847) counter 848
terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::thread_resource_error> >'
what(): boost::thread_resource_error
Aborted (core dumped)
내 노트북은 유휴 상태에서 ~ 130 개의 프로세스를 사용합니다. 따라서 nproc 또는 더 넓은 관점에서 리눅스 는 프로세스와 스레드를 구별하지 않습니다. 스레드는 프로세스뿐만 아니라 소진 될 수 있기 때문에 나에게 합리적인 것 같습니다.