zoukankan      html  css  js  c++  java
  • linux affinity

    现在的CPU几乎都是多核,所以,分配给予进程相同数量的线程是合理的需求

    但是,这些线程不一定就均匀跑在这些内核上

    所以,我们要指派,“一个线程就运行在一个固定的CPU内核上”

    //test.c

    #define _GNU_SOURCE

    #include <stdio.h>

    #include <stdlib.h>

    #include <string.h>

    #include <unistd.h>

    #include <pthread.h>

    #include <sched.h>

    void *myfun(void *arg)

    {

        cpu_set_t mask;

        cpu_set_t get;

        char buf[256];

        int i;

        int j;

        int num = sysconf(_SC_NPROCESSORS_CONF);

        printf("system has %d processor(s) ", num);

        for (i = 0; i < num; i++) {

            CPU_ZERO(&mask);

            CPU_SET(i, &mask);

            if (pthread_setaffinity_np(pthread_self(), sizeof(mask), &mask) < 0) {

                fprintf(stderr, "set thread affinity failed ");

            }

            CPU_ZERO(&get);

            if (pthread_getaffinity_np(pthread_self(), sizeof(get), &get) < 0) {

                fprintf(stderr, "get thread affinity failed ");

            }

            for (j = 0; j < num; j++) {

                if (CPU_ISSET(j, &get)) {

                    printf("thread %d is running in processor %d ", (int)pthread_self(), j);

                }

            }

            j = 0;

            while (j++ < 100000000) {

                memset(buf, 0, sizeof(buf));

            }

        }

        pthread_exit(NULL);

    }

    int main(int argc, char *argv[])

    {

        pthread_t tid;

        if (pthread_create(&tid, NULL, (void *)myfun, NULL) != 0) {

            fprintf(stderr, "thread create failed ");

            return -1;

        }

        pthread_join(tid, NULL);

        return 0;

    }

    //result

    #gcc -o test.o -c test.c

    #gcc -o test test.o -lpthread

    #./test

    Finally:

    这项技术特别有用,不多说了

  • 相关阅读:
    phpcms后台进入地址(包含No permission resources错误)
    phpmyadmin上传大sql文件办法
    ubuntu彻底卸载mysql
    Hdoj 2602.Bone Collector 题解
    一篇看懂词向量
    Hdoj 1905.Pseudoprime numbers 题解
    The Python Challenge 谜题全解(持续更新)
    Hdoj 2289.Cup 题解
    Hdoj 2899.Strange fuction 题解
    Hdoj 2199.Can you solve this equation? 题解
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7940525.html
Copyright © 2011-2022 走看看