• 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:

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

  • 相关阅读:
    将动态aspx页面转换成为静态html页面的几种方法
    IHttpHandler 概述
    .Net,你究竟有多慢
    Js离开提示
    vs2008Webconfig文件
    什么是URL转发和一个IP建多个Web站点主机头名法
    sqlserver 统计sql语句大全收藏
    web.config 读写操作
    httpModules 与 httpHandlers
    简单的介绍一下常用的正规表示式:
  • 原文地址:https://www.cnblogs.com/woodzcl/p/7940525.html
Copyright © 2020-2023  润新知