Ожидание на нескольких событиях C++

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

if(!empty(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES)){ $j = 1; foreach(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES as $filekey=>$fileattachments){ foreach($fileattachments as $key=>$val){ if(is_array($val)){ $i = 1; foreach($val as $v){ $field_name = "multiple_".$filekey."_".$i;

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES[$field_name][$key] = $v; $i++; } }else{ $field_name = "single_".$filekey."_".$j;

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES[$field_name] = $fileattachments; $j++; break; } } // Unset the useless one unset(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES[$filekey]); } foreach(

Все опубликованные файлы будут входить в переменную $ _FILES, для использования библиотеки загрузки codeigniter нам нужно указать имя поля, которое мы используем для загрузки (по умолчанию это будет 'userfile'), поэтому мы получаем все опубликованные файлы и создаем другой массив файлов, который создает наше собственное имя для каждого файла и присваивает это имя функции doignup библиотеки библиотеки codeigniter.

[110]FILES as $field_name => $file){ if(isset($file['error']) && $file['error']==0){ $config['upload_path'] = [upload_path]; $config['allowed_types'] = [allowed_types]; $config['max_size'] = 100; $config['max_width'] = 1024; $config['max_height'] = 768; $this->load->library('upload', $config); $this->upload->initialize($config); if ( ! $this->upload->do_upload($field_name)){ $error = array('error' => $this->upload->display_errors()); echo "Error Message : ". $error['error']; }else{ $data = $this->upload->data(); echo "Uploaded FileName : ".$data['file_name']; // Code for insert into database } } } }
5
задан jalf 27 May 2009 в 15:59
поделиться

3 ответа

Вы можете прослушивать несколько файловых дескрипторов без использования нескольких потоков, используя системный вызов select (2) . Вы можете использовать pthread_cond_timedwait для ожидания переменной условия с тайм-аутом, так что вы не ждете больше определенного количества времени.

Я думаю, что очень необычно хотеть одновременно ждать любой из них. переменная условия или какой-либо дескриптор файла - если вы абсолютно уверены в том, что хотите сделать, вам придется использовать несколько потоков, причем один поток будет вызывать либо pthread_cond_wait / ] pthread_cond_timedwait , а другой поток, вызывающий select или какую-либо другую функцию ввода-вывода.

4
ответ дан 18 December 2019 в 12:01
поделиться

Нет необходимости в отдельных потоках, ожидающих accept (2) и stdin - используйте здесь poll / select . Вместо условной переменной создайте канал между потоками (потоки у вас уже есть, если мы говорим о CV), дождитесь его в том же опросе и напишите в него, когда произойдет событие.

7
ответ дан 18 December 2019 в 12:01
поделиться

Определенно кажется, что эти три различных варианта обмена сообщениями являются взаимоисключающими для одного потока; как один поток может читать из stdin, пока он ожидает условия потока?

Если вы действительно не хотите создавать три потока, единственный вариант, который я могу понять, - это как-то изменить или параметризовать библиотеки потока, потока и сокета для получения ссылки на объект синхронизации.

0
ответ дан 18 December 2019 в 12:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: