2013-09-18 4 views
1

Я хотел бы запустить параллельную Java-программу с потоком и воспользоваться преимуществами многопроцессорного выполнения. Однако мне нужно установить переменную окружения, чтобы включить многопоточную среду. Я понимаю, что вы можете установить среду, выпуская setenv PARALLEL 4 ИЛИ setenv OMP_NUM_THREADS 4 (для программы OpenMP).Как установить переменную среды для многопоточной программы?

Это должно позволить 4 процессорам работать одновременно, если у вас 4 процессора.

Мой вопрос:

  1. где вы выдать вышеуказанную команду (SETENV) и как вы это делаете?

В Java вы можете позвонить System.getenv("NUM_THREADS") получить NUM_THREADS. Однако нет четкого способа настройки среды. Я запускаю машину AMD-x64: ОС: Windows 8, Процессор: AMD E-300 APU Двухъядерный процессор, Ram: 4.00GB, Тип системы: 64-разрядная ОС.

ответ

1

Я считаю, что setenv - это команда для linux/unix.

В окне 7 вы можете использовать команду setx в командной строке для установки переменной среды пользователя. например:

setx myvariablename myvariablevalue 

Или вы можете сделать это через графический интерфейс:

правой кнопкой мыши Мой компьютер -> Свойства -> Дополнительно -> Переменные среды

2

Ниже приводится ссылка, которая объясняет, о том, как установить переменная окружения в машине Windows, вручную:

http://www3.ntu.edu.sg/home/ehchua/programming/howto/Environment_Variables.html

Кусок взят из выше ссылке (необходимо полностью прочитать по ссылке, его очень богатые знания):


отображения переменных и их значения

Чтобы получить список всех переменных и их значения, запустите оболочку CMD (нажмите кнопку «Пуск» ⇒ «Выполнить» ⇒ введите «cmd») и выполните команду «set». Чтобы отобразить конкретную переменную, используйте команду «set varname». Например,

// Display all the variables (in NAME=VALUE pairs) 
prompt> set 
COMPUTERNAME=xxxxxxx 
OS=xxxxxxx 
PATH=xxxxxxx 
....... 

// Display a particular variable 
prompt> set COMPUTERNAME 
COMPUTERNAME=xxxxxx 
// OR use echo command with variable enclosed within a pair of '%'s 
prompt> echo %COMPUTERNAME% 
COMPUTERNAME=xxxxxx 

Попробуйте выполнить команду set в вашей системе и изучите перечисленные переменные окружения. Обратите особое внимание на переменную PATH.

Установить/Изменить/отключенное переменной

Чтобы установить (или изменение) переменной, использовать команду "установить VarName = значение". Не должно быть пробелов до и после знака '='. Чтобы отключить переменную среды, используйте «set varname =», т. Е. Установите ее в пустую строку.

prompt> set varname 
prompt> set varname=value 
prompt> set varname= 
prompt> set 

дисплей значение переменной

Set или не изменить значение переменной (Примечание: нет пространства до и после «=») Удалить переменную путем установки в пустая строка (Примечание: ничего после '=') Показать ВСЕ переменные окружения. Для примера,

// Set an environment variable 
prompt> set MY_VAR=hello 

// Display 
prompt> set MY_VAR 
MY_VAR=hello 

// Unset an environment variable 
prompt> set MY_VAR= 

// Display 
prompt> set MY_VAR 
Environment variable MY_VAR not defined 

Переменная набор с помощью команды «набор» под CMD является локальной переменной, доступны только для текущего сеанса CMD.


Если вы хотите установить один и тот же с помощью кода Java, ниже один пример:

public static void main(String[] args) throws IOException { 

ProcessBuilder pb = new ProcessBuilder("CMD", "/C", "SET"); 
Map<String, String> env = pb.environment(); 
env.put("MYVAR", "myValue"); 
Process p = pb.start(); 
InputStreamReader isr = new InputStreamReader(p.getInputStream()); 
char[] buf = new char[1024]; 
while (!isr.ready()) { 
    ; 
} 
while (isr.read(buf) != -1) { 
    System.out.println(buf); 
} 
} 

Если вы хотите передать какую-то ценность для вашей программы, вы также можете сделать это в командной строке:

java -DMyVar=varValue <main program> 

Это значение может быть истолковано как:

String myVar= System.getProperty("MyVar"); 
+0

Если я решил установить переменную окружения в командной строке, чтобы у меня была переменная с именем NUM_THREADS = 2, а в моем .java или .cpp-файле у меня есть другая переменная с именем NUM_THREADS. Или предположим, что я хотел бы назвать эту переменную, которую я инициализировал в командной строке в файле .java или .cpp, как они узнают друг друга? Как файл .cpp вызывает эту переменную, которая была создана в приглашении. – Juniar

+0

Вы имеете в виду, что вы определяете две переменные в java и CPP и хотите друг друга узнать об этом? Если это так, значение переменной среды является системным свойством, а не конкретным языком. Как только вы установили его вручную, он доступен повсюду. Но если вы установите его как параметр команды или параметр JVM, он будет доступен только для этой программы. Если вы хотите, чтобы он присутствовал для всей программы, установите его в переменную системной среды. – gyan

+0

Спасибо, у меня возникла проблема с вызовом переменной внутри класса Java. Мне нужно было сделать ссылку на него в классе. Но я понял. – Juniar

Смежные вопросы