加上一个: #include <unistd.h> 执行成功。
控制CPU代码:
#include <iostream>
#include <pthread.h>
#include <time.h>
#include <math.h>
#include <unistd.h>
using namespace std;
typedef long long int int64;
const int NUM_THREADS = 24; // CPU 核数
int eachTime = 100;
int cpuinfo = 0; // 占用率
int64 GetTickCount()
{
timespec now;
clock_gettime(CLOCK_MONOTONIC, &now);
int64 sec = now.tv_sec;
int64 nsec = now.tv_nsec;
return sec*1000 + nsec/1000000;
}
void* CPUCost(void *args)
{
std::cout << "XXXX CPUCost" << std::endl;
int busyTime = eachTime * cpuinfo / 100;
//std::cout << "XXXX cpuinfo = " << cpuinfo << std::endl;
int idleTime = eachTime - busyTime;
int64 startTime = 0;
while (true)
{
startTime = GetTickCount();
while((GetTickCount() - startTime) <= busyTime)
{
;
}
usleep(100);
}
}
int main(int argc, char **argv)
{
std::cin >> cpuinfo;
pthread_t t[NUM_THREADS];
for(int i = 0; i < NUM_THREADS; i++)
{
int ret = pthread_create(&t[i], NULL, CPUCost, NULL);
if(ret)
{
std::cout << "XXXX create err" << std::endl;
}
}
pthread_exit(NULL);
return 0;
}